我使用React创建待办事项列表应用程序,此阶段不涉及后端。目前我有两个组件pd.concat([df1.set_index('id'),df2.set_index('user_id')],1).reset_index()
Out[38]:
index name country gender
0 1 Cyrus MY female
1 2 May US male
和Type
。 ListTable
是表单组件,Type
是一个表组件,用于显示ListTable
中存储的数据。
我想要实现的是,在我输入表单后,点击this.state
组件中的submit
按钮,Type
中的state
数据将作为{{1}传递到Type
组件,表数据将相应更改。但是我不知道如何执行此操作,而是在props
组件中添加了一个额外的按钮ListTable
,以便在refresh
组件中调用ListTable
函数。我认为这种方式有效但不太合适。
答案 0 :(得分:0)
我会在这里想出一个不同的组件架构。您看,您的ListTable
是一个子Type
组件,即使这不是最好的方法。
创建一个新组件,它将是两者的父组件,例如
class ParentComponent extends Component {
constructor(props) {
super(props);
this.state = { todos: [] };
this.addTodo = this.addTodo.bind(this);
}
addTodo(todo) {
this.setState({ todos: [...this.state.todos, todo] })
}
...
render() {
return (
<div>
<ListTable todos={this.state.todos} /> //passing todos
<Type addTodo={this.addTodo} /> //passing a addTodo function
</div>
);
}
}
您可以向Type
组件传递一项功能,以更新ParentComponent
的状态,并将该状态传递给ListTable
组件以呈现您的待办事项。
并且Type
组件的onSubmit
函数应该只更新其父组件的状态,不应该返回任何内容。
onSubmit() {
this.props.addTodo(this.state);
}
更新:
从onClick
的添加按钮中删除Task
处理程序,并将onSubmit处理程序添加到表单中:
<form onSubmit={this.handleFormSubmit.bind(this)}>
并声明这个处理程序如下:
handleFormSubmit(e) {
e.preventDefault();
this.props.addTodo(this.state);
}
您的ListTable's table
函数也应该遍历props.todos
而不是状态。