Eni*_*lek 9 javascript reactjs
是否有任何方式将状态从父组件传递到子组件,如:
var ParentComponent = React.createClass({
getInitialState: function() {
return {
minPrice: 0
}
},
render: function() {
return (
<div onClick={this.doSomething.bind(this, 5)}></div>
);
}
});
var ChildComponent = React.createClass({
getInitialState: function() {
return {
minPrice: // Get from parent state
}
},
doSomething: function(v) {
this.setState({minPrice: v});
},
render: function() {
return (
<div></div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
我想从子组件更改父状态值.在react.js有可能吗?
有,但它并不打算这样工作的反应.双向数据绑定不是React的方法,摘自文档.
在React中,数据以一种方式流动:从所有者到子.
因此,如果要在子组件中操作父状态,则要执行的操作是传递侦听器.
//parent component's render function
return (
<Child listenerFromParent={this.doSomething} />
)
//child component's render function
return (
<div onClick={this.props.listenerFromParent}></div>
)
Run Code Online (Sandbox Code Playgroud)
您可以使用“limelights”解决方案,即将函数从父级传递给子级。
或者您也可以使用像React-Cursor这样的项目,它允许轻松地操作从子组件中的父组件传递的状态。
我制作了我的自制框架(Atom-React,这里有一些细节),它也使用游标(受到 Om 的启发),并且您可以以某种方式轻松实现与游标的双向数据绑定,从而允许操作由父组件管理的状态。
这是一个用法示例:
<input type="text" valueLink={this.linkCursor(this.props.inputTextCursor)}/>
Run Code Online (Sandbox Code Playgroud)
这inputTextCursor
是从父组件传递到子组件的游标,因此子组件可以轻松无缝地更改父组件的数据。
我不知道其他基于游标的 React 包装器是否使用这种技巧,但该linkCursor
功能可以通过简单的 mixin 轻松实现:
var ReactLink = require("react/lib/ReactLink");
var WithCursorLinkingMixin = {
linkCursor: function(cursor) {
return new ReactLink(
cursor.getOrElse(""),
function setCursorNewValue(value) {
cursor.set(value);
}
);
}
};
exports.WithCursorLinkingMixin = WithCursorLinkingMixin;
Run Code Online (Sandbox Code Playgroud)
所以你可以轻松地将这种行为移植到React-Cursor
归档时间: |
|
查看次数: |
4289 次 |
最近记录: |