我有一个组件不能渲染这样的东西:
var Application = react.createClass .....
function(....)
module.exports = Application
另一个组件是这样的:
var Tag = react.createClass....
getInitialState
//...
functions
//...
setState({ submit: false })
render:
//...
我想在应用程序的Tag中更改提交状态。这可能吗?
答案 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这样的东西就足够了。