Gia*_*Elk 8 reactjs react-router
我无法弄清楚如何从我的post路由和组件中的父ReactJS组件访问方法.用react-router.
这是在
<RouteHandler {...this.state} />
方法/函数pushToPostList()将post对象添加到数组中this.state.myList.
试图让我的<Post />组件工作,以便调用this.props.pushToPostList(newPost)更新this.state.myList<App />
路由器是:
var routes = (
<Route handler={App} >
<DefaultRoute handler={SignUp} />
<Route name="feed" path="feed" handler={LatestFeed} />
<Route name="post" path="post" handler={Post} pushToPostList={this.pushToPostList} />
</Route>
);
Router.run(routes, function (Handler) {
React.render(<Handler />, document.body );
});
Run Code Online (Sandbox Code Playgroud)
更多代码:
var App = React.createClass({
getInitialState: function() {
return {
myList: []
};
},
pushToPostList: function (object) {
if (object) {
var myTempPosts = this.state.myPostList;
myTempPosts.push(object);
this.setState( {myPostList: myTempPosts} );
}
},
render: function() {
return (
<div>
<RouteHandler {...this.state} />
</div>
);
}
});
var Post = React.createClass({
handleSubmit: function(e) {
e.preventDefault();
var myPostTxt = this.refs.myPostTxt.getDOMNode().value.trim();
this.props.pushToPostList( myPostTxt ); // Send object to parent ReactJS component.
},
render: function() {
return (
<div>
Post.
<textarea
ref="myPostTxt" />
<p />
<button onClick={this.handleSubmit} type="submit">Post</button>
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
将pushToPostList={this.pushToPostList}移动到应用程序类。
var App = React.createClass({
getInitialState: function() {
return {
myList: []
};
},
pushToPostList: function (object) {
if (object) {
var myTempPosts = this.state.myPostList;
myTempPosts.push(object);
this.setState( {myPostList: myTempPosts} );
}
},
render: function() {
return (
<div>
<RouteHandler {...this.state} pushToPostList={this.pushToPostList} />
</div>
);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6016 次 |
| 最近记录: |