反应.js:将回调传递给子组件并删除组件
React.js: Passing a callback to a child component and removing a component
这是源 https://github.com/bengrunfeld/gae-react-flux-todos/tree/master/src/js 的链接
在 React 教程中,它展示了如何将回调传递给子组件,然后子组件可以继续使用它。
假设你想生成一个待办事项列表,但向每个待办事项传递一个回调,这样如果点击该待办事项上的delete
按钮,它将调用其父级(TodoList
)中的函数removeTodo
,将其从DOM中删除。
所以我遇到的问题是,在下面的例子中,由于this.props.data.map
的范围,我无法将this.removeTodo
传递给<Todo>
。如果您尝试它,它会出错undefined
。
其次,即使我可以,我也不确定如何从 DOM 中删除 Todo,因为我无法访问 TodoList
内部state
的可变版本 - 它只能作为不可变this.props
使用。如果我能改变state
,我就可以调用setState
,这将触发渲染,这将从列表中删除项目。
那么,您将如何解决这个问题呢?
var TodoList = React.createClass({
removeTodo: function(todo) {
// Remove Todo
// Change the state
// Re-render with setState();
},
render:function(){
var todoNodes = this.props.data.map(function(todo) {
return (
<Todo key={todo.id} id={todo.id} onRemoveTodo={this.removeTodo}>
{todo.title}
</Todo>
);
});
return (
<div className="todoList">
{todoNodes}
</div>
)
}
var Todo = React.createClass({
onDeleteClick: function(todo){
AppActions.deleteTodo({id: todo.target.className});
// Call the `removeTodo` function in `TodoList` (parent) here!
// this.props.onRemoveTodo
},
render:function(){
return (
<div><p>{this.props.children} - <a className={this.props.id} onClick={this.onDeleteClick}>delete</a></p></div>
)
}
});
查看您的代码,由于您遵循的是 Flux 架构,因此您需要在删除存储中存在的 deleteTodo
中的待办事项后发出CHANGE_EVENT
。
deleteTodo: function(todo) {
this.deleteTodoOnServer(todo).done(function(result){
//DELETE your the TodoItem here
AppStore.emitChange(AppConstants.CHANGE_EVENT);
return;
}).fail(function(result){
console.log('fail');
// return 'error in deleteTodoOnServer Ajax call: ' + result;
});
},
相关文章:
- 从组件状态的数组中删除元素
- 反应.js:将回调传递给子组件并删除组件
- 如何在IE中完全删除flash组件
- Angular2子组件正在删除
- 组件如何从 DOM 中移除/删除自身
- 使用视觉力组件从阵列中删除重复项
- Angular2 - 删除所有/最近的子组件后无法添加子组件
- 如何删除特定的子 React 组件
- 如何在 foreach 循环中使用 JavaScript 变量之前从 JavaScript 变量中删除或排除组件
- 反应如何在组件中正确删除列表器将卸载,为什么我需要在构造函数中绑定
- 如何通过让用户添加和删除小组件来创建可自定义的仪表板
- 从react中的父dom节点中删除子组件
- 如何使用React JS删除UI组件
- 角度组件路由器从URL中删除#
- Joomla!组件表单和jQuery来动态添加/删除字段的子集
- 我似乎无法使用组件将卸载可靠地删除侦听器
- 从删除的li组件中删除一个输入框
- React是否自动修剪已从DOM中删除其挂载点的组件
- [Rreact/JSX]:当单击当前组件时,删除同级组件上的CSS类
- React:将输入字段的值与删除的组件关联起来