Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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
Javascript 将值传递给子级而不将其保存为状态_Javascript_Reactjs - Fatal编程技术网

Javascript 将值传递给子级而不将其保存为状态

Javascript 将值传递给子级而不将其保存为状态,javascript,reactjs,Javascript,Reactjs,我有一个应用程序,我的工作和我卡在一个部分。 我有一个用于从服务器获取数据的组件,然后需要将该组件传递到另一个组件 由于这可能是一个很大的负载,我不想使用全局变量存储数据,然后在调用render时传递数据,也不想将数据保存到状态,因为数据与应用程序组件无关 是否有一种方法可以将从componentDidMount接收到的值传递给渲染函数,并将其作为道具传递给所需的组件 提前谢谢 *编辑: // code componentDidMount() { // gets the data }

我有一个应用程序,我的工作和我卡在一个部分。 我有一个用于从服务器获取数据的组件,然后需要将该组件传递到另一个组件

由于这可能是一个很大的负载,我不想使用全局变量存储数据,然后在调用render时传递数据,也不想将数据保存到状态,因为数据与应用程序组件无关

是否有一种方法可以将从componentDidMount接收到的值传递给渲染函数,并将其作为道具传递给所需的组件

提前谢谢

*编辑:

// code
componentDidMount() {
    // gets the data
}

redner() {
    return <Node value={*Needs to be passed here*} />
}
这段代码都在我的应用程序组件中。我需要将数据从componentDidMount传递到render,而不使用状态或全局变量。

每次更新组件道具时都会调用render函数。除非您在shouldComponentUpdate中明确禁用它。因此,如果正确更新道具,则应该在渲染函数中获得所有道具更改

编辑:

更新答案后,我希望我能正确理解问题

在您的情况下,最好的方法是使用state在异步承诺/回调和render方法之间共享数据。通过this.setState方法设置状态可确保重新渲染组件

比如:

// code
componentDidMount() {
    // gets the data
    this.state = {}; init state
    axios.get("/data")
        .then(response => this.setState({ data: response.data }));
}

redner() {
    return <Node value={this.state.data} />
}

我更新了我的问题,以更好地反映我试图解释的内容。我是个白痴。我完全抛弃了应该存储在顶部组件中的想法。很抱歉浪费了你的时间。只是为了确保我理解正确。您正在执行componentDidMount中的服务器调用?是。电话是在那里打的。