Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在嵌套组件中传递数据?_Reactjs_React Native_React Redux - Fatal编程技术网

Reactjs 如何在嵌套组件中传递数据?

Reactjs 如何在嵌套组件中传递数据?,reactjs,react-native,react-redux,Reactjs,React Native,React Redux,我想知道如何在嵌套组件中传递数据。 我正在使用react-native和react-redux、redux-thunk、redux-persist制作一个应用程序 根据我对redux概念的理解,即使它由嵌套组件组成,也可以从存储中获取或更新状态。 但是,我只将数据作为道具从父组件传递到子组件。 我想使用redux是不正确的,因为深度越深,调用父组件的函数就越多。 听起来很奇怪,对吧? 如果你看到我的代码,你就会明白我在说什么 这是我的密码 更新 例如,代码结构类似于下面的代码。 若我想在孙子组件

我想知道如何在嵌套组件中传递数据。 我正在使用react-native和react-redux、redux-thunk、redux-persist制作一个应用程序

根据我对redux概念的理解,即使它由嵌套组件组成,也可以从存储中获取或更新状态。 但是,我只将数据作为道具从父组件传递到子组件。 我想使用redux是不正确的,因为深度越深,调用父组件的函数就越多。 听起来很奇怪,对吧? 如果你看到我的代码,你就会明白我在说什么

这是我的密码

更新 例如,代码结构类似于下面的代码。 若我想在孙子组件中调用操作,我应该转到父组件吗

parent.js

child.js

孙子

我想找出redux的原因,因为reducer现在被调用了两次,但我不知道这里发生了什么

如果你能给我提些建议,对我会有帮助的。
谢谢大家!

我不确定该怎么走。但我正在处理组件:

重用UI,使用不同的数据动态->纯组件。从家长那里传递道具 仅用于1逻辑/数据->组件。连接到存储
哪个函数被触发两次?请根据您的代码更加专业,之后comunity会更有帮助。我认为,如果将箭头函数与普通函数混合使用,可能会触发任何不需要的函数。请记住,当第一次装入组件时,React生命周期将调用render方法twices


在孙子组件中,在成功呈现组件后调用childFunc。也许在您的子组件中,您第一次调用该函数时并不知道它。因此,请更加谨慎,准确地显示您遇到问题的代码部分。

谢谢您的回答!然而,我认为你的答案不是我想要的。我更新了我的帖子。谢谢。我会更新我的代码。顺便问一下,上面代码的结构有什么问题吗?我指的是这个结构的父级,如果比示例更深,那么每当我想要分派动作时,我是否应该将函数从grand grand child传递给父级?如果你想要分派任何动作,你应该在actions.js文件上创建该动作,然后在redux的帮助下将动作/函数作为道具传递。每次调用该操作时,都会将一个playload从reducer分派到您要调用的组件。您还可以接收作为道具的Desired组件中的数据/播放负载。
...

getData = async () => {
    await Actions.func();
}

render() {
    return (
        <Parent>
            <Child data={data} getData={this.getData}/>
        </Parent>
    );
}
...
childFunc(){
    this.props.getData();
}

<Child>
    <GrandChild grandChildFunc={this.childFunc}/>
</Child>
...
componentDidMount() {
    this.props.childFunc();
}

render() {
    return (
        <View>
            <Text>Example</Text>
        <View>
    );
}