将值传递给子节点而不将其保存到状态

时间:2018-01-22 11:25:25

标签: javascript reactjs

我有一个应用程序,我正在努力,我坚持一个部分。 我有一个组件,用于从服务器获取数据,然后我需要传递到另一个组件。

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

有没有办法可以将我从componentDidMount()收到的值传递给渲染函数并将其作为道具传递给所需的组件?

提前致谢!

*编辑:

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

redner() {
    return <Node value={*Needs to be passed here*} />
}

此代码段完全在我的应用程序组件中。我需要将componentDidMount()中的数据传递给渲染而不使用状态或全局变量。

1 个答案:

答案 0 :(得分:1)

每次更新组件render时都会调用

props函数。除非您在shouldComponentUpdate中明确禁用它。因此,您应该获得props函数中的所有render更改(如果您正确更新道具)。

修改

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

在您的情况下,最好的方法是使用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} />
}