Javascript 为React中的父组件提供状态
我知道您可以将React中的状态和道具从父组件传递到子组件,但是有没有相反的方法 例如:Javascript 为React中的父组件提供状态,javascript,reactjs,Javascript,Reactjs,我知道您可以将React中的状态和道具从父组件传递到子组件,但是有没有相反的方法 例如: var Parent = React.createClass({ render: function() { return ( <div> <Child> {(childState) => { // render other 'grandchildren' here }}
var Parent = React.createClass({
render: function() {
return (
<div>
<Child>
{(childState) => {
// render other 'grandchildren' here
}}
</Child>
</div>
);
}
});
给定一些子组件:
var Child = React.createClass({
getInitialState: function(){
return {
data: ''
};
},
componentDidMount: function(){
this.setState({data: 'something'});
},
render: function() {
return (
<div>
...
</div>
);
}
});
var Parent = React.createClass({
render: function() {
return (
<div>
<Child />
...
</div>
);
}
});
给定一些父组件:
var Child = React.createClass({
getInitialState: function(){
return {
data: ''
};
},
componentDidMount: function(){
this.setState({data: 'something'});
},
render: function() {
return (
<div>
...
</div>
);
}
});
var Parent = React.createClass({
render: function() {
return (
<div>
<Child />
...
</div>
);
}
});
有什么方法可以让我从Child向Parent提供状态数据的值吗?没有
但是是的。但是真的没有
在React中不能将任何内容从子级传递给父级。但是,有两种解决方案可以用来模拟这种传球
1将回调从父级传递给子级
var Parent = React.createClass({
getInitialState: function() {
return {
names: []
};
},
addName: function(name) {
this.setState({
names: this.state.names.push(name)
});
},
render: function() {
return (
<Child
addName={this.addName}
/>
);
}
});
var Child = React.createClass({
props: {
addName: React.PropTypes.func.isRequired
},
handleAddName: function(event) {
// This is a mock
event.preventDefault();
var name = event.target.value;
this.props.addName(name);
},
render: function() {
return (
...
onClick={this.handleAddName}
...
);
}
});
第二个选项是通过使用一个样式的操作/存储系统(如或)来获得顶级状态。这些功能基本上与上述功能相同,但更为抽象,使得在更大的应用程序上实现这些功能非常简单。否
但是是的。但是真的没有
在React中不能将任何内容从子级传递给父级。但是,有两种解决方案可以用来模拟这种传球
1将回调从父级传递给子级
var Parent = React.createClass({
getInitialState: function() {
return {
names: []
};
},
addName: function(name) {
this.setState({
names: this.state.names.push(name)
});
},
render: function() {
return (
<Child
addName={this.addName}
/>
);
}
});
var Child = React.createClass({
props: {
addName: React.PropTypes.func.isRequired
},
handleAddName: function(event) {
// This is a mock
event.preventDefault();
var name = event.target.value;
this.props.addName(name);
},
render: function() {
return (
...
onClick={this.handleAddName}
...
);
}
});
第二个选项是通过使用一个样式的操作/存储系统(如或)来获得顶级状态。这些基本上与上述功能相同,但更为抽象,使得在更大的应用程序上实现这些功能非常容易。实现这一点的一种方法是通过我最近介绍的“渲染道具”模式。请记住,this.props.children实际上只是一种将内容传递给组件的方法 例如:
var Parent = React.createClass({
render: function() {
return (
<div>
<Child>
{(childState) => {
// render other 'grandchildren' here
}}
</Child>
</div>
);
}
});
这可能是最适合的情况下,是负责做一些事情,但并不真正关心的孩子,将提供在其位置。react培训人员使用的示例用于一个组件,该组件将从Github API获取,但允许父级真正控制使用这些结果呈现的内容/情况。一种方法是通过我最近介绍的“呈现道具”模式。请记住,this.props.children实际上只是一种将内容传递给组件的方法 例如:
var Parent = React.createClass({
render: function() {
return (
<div>
<Child>
{(childState) => {
// render other 'grandchildren' here
}}
</Child>
</div>
);
}
});
这可能是最适合的情况下,是负责做一些事情,但并不真正关心的孩子,将提供在其位置。react培训人员使用的示例用于一个组件,该组件将从Github API获取数据,但允许家长真正控制使用这些结果呈现的内容/情况。非常感谢-我能够使用您的方法解决我的问题。非常感谢-我能够使用您的方法解决我的问题。