【问题标题】:How to pass value stored in state to another screen in react native如何在本机反应中将存储在状态中的值传递到另一个屏幕
【发布时间】:2021-11-21 05:10:00
【问题描述】:

所以我创建了一个像这样的状态:

const [inState, setInState] = useState([<View />]);

然后点击一些按钮,我正在更新inState

const breakOutClick = () => {
    setInState([
        ...inState,
        <>
            <StatusBoxComponent
                ImageConfigIconCheckOut={true}
                status={'Break-Out'}
                time={time}
            />
        </>,
    ]);
};

const breakInClick = () => {
    setInState([
        ...inState,
        <>
            <StatusBoxComponent
                ImageConfigIconCheckOut={true}
                status={'Break-In'}
                time={time}
            />
        </>,
    ]);
};

我能够以这种方式在同一屏幕上显示存储在 inState 中的所有内容:

<View>
    {inState}
</View>

但我想将此inState 传递到另一个屏幕并显示存储在inState 中的所有内容。

为此,我尝试了以下方法:

props.navigation.navigate(ChartScreen, {
            inState: inState,
        });

然后在第二个屏幕上,即 ChartScreen,我做了以下操作:

const ChartScreen = (props: any) => {
    const {inState} = props.route.params;
    return (
        <View style={styles.screen}>
            {inState}
        </View>
    );
};

但第二次我收到错误TypeError: cyclical structure in JSON object, js engine: hermes

我不知道我做错了什么,请帮忙

【问题讨论】:

    标签: reactjs typescript react-native react-hooks react-native-android


    【解决方案1】:

    尝试以下以防止循环结构:

    props.navigation.navigate(ChartScreen, {
            inState: {…inState}
    });
    

    除了……你可以写:

    props.navigation.navigate(ChartScreen, {
            inState: Object.assign({}, inState)
    });
    

    【讨论】:

    • {…inState} ,在... 它正在给invalid character
    • 这确实有助于将数据传递到下一个屏幕,但您能否解释一下如何在我的屏幕上显示inState。因为我目前使用&lt;View style&gt;{inState}&lt;/View&gt; 的方法出现错误:Error: Objects are not valid as a React child (found: object with keys {0, 1}). If you meant to render a collection of children, use an array instead.
    • 因为 inState 是一个数组,你应该做类似&lt;View&gt;{inState.map((is)=&gt; &lt;View&gt;{is}&lt;/View&gt;)}&lt;/View&gt;
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多