如何设置来自不同组件的一个组件的状态?

时间:2015-11-11 20:22:29

标签: reactjs components state

我有一个组件不能渲染这样的东西:

var Application = react.createClass .....

function(....)

module.exports = Application

另一个组件是这样的:

var Tag = react.createClass....
  getInitialState
  //...
  functions
  //...
  setState({ submit: false })
  render: 
  //...

我想在应用程序的Tag中更改提交状态。这可能吗?

1 个答案:

答案 0 :(得分:2)

虽然可以从Application更改Tags的状态,但你真的不应该这样做。此外,我讨厌这些类型的答案,因为我不应该告诉你坏的vs.良好的做法,我应该给你你寻求的答案。

我就是这样做的。

如果您需要设置应用程序中的标签状态,您可以执行以下两项操作之一:

A。在应用程序上调用setState,并将特定道具传递给您将检查的标签,以查看是否应该设置State。您可以在componentWillReceiveProps标签中查看此内容。根据收到的道具,你可以setState。请注意,componentWillReceiveProps运行时不会运行componentDidMount,因此您可能需要在componentDidMount结束时执行类似操作来强制运行{/ 1}}:

componentDidMount: function() {

    //other code...

    if (this.props.forceReceiveProps === true) {
        this.componentWillReceiveProps(this.props);
    }
}

B。另一种方法是使用引用来自应用程序的标签。

在应用程序中,您将呈现可能包含标签的内容。做这样的事情:

<Tags ref=tagsRef />

然后,在Application中的一些代码中,您可以这样做:

this.refs.tagsRef.setState({})

编辑:实际上,在重新阅读时,您似乎无法在应用程序中渲染。我以为它是整个应用程序的父级。不确定为什么你没有在Application中渲染,但是说你可能想要使用像Flux这样的东西就足够了。