【发布时间】:2016-10-20 09:53:15
【问题描述】:
我在 React 中有一个父组件,它显示一个项目列表,也是一个 (selectedList) 的状态,它为这个列表项提供一个活动类 + 根据活动类显示其他组件。这是父组件。
在一个孩子中,我显示了一个表单,我可以在其中设置一个新列表和一个 onSubmit 事件,我将它插入到一个集合中(meteor+mongo)
问题是我无法在新项目(id)和父组件之间建立关系,因为我想选择新创建的列表(所以给活动类并显示其他组件)。然后我认为我应该更新 state.selectedListId 但我不知道如何在孩子中将其发送到父组件?
这里有几行代码:
父元素(页面)
class TodosPage extends Component {
constructor(props) {
super(props);
this.state = {
listSelected: "",
};
}
selectList(listId) {
this.setState({ listSelected: listId });
}
renderLists() {
return this.props.lists.map((list) => (
<List
selectedItemId={this.state.listSelected}
selectList={() => this.selectList(list._id)}
key={list._id}
list={list}
countPendingTasks={this.countPendingTasks(list._id)}
/>
));
}
render() {
return (
<div className="container">
<ListForm />
<ListGroup>
{this.renderLists()}
</ListGroup>
儿童元素(列表形式)
handleSubmit(event) {
event.preventDefault();
const name = ReactDOM.findDOMNode(this.refs.nameInput).value.trim();
Meteor.call('lists.insert', name, (err, listId) => {
console.log("in method insert = " + listId);
// HERE I CAN HAVE THE GOOD ID
});
ReactDOM.findDOMNode(this.refs.nameInput).value = '';
}
render() {
return (
<Form bsClass="col-xs-12" onSubmit={this.handleSubmit.bind(this)} >
<FormGroup bsClass="form-group">
<FormControl type="text" ref="nameInput" placeholder="Add New List" />
</FormGroup>
</Form>
);
}
然后,我可以在 HandleSubmit 中拥有好的 ID,但我不知道如何将它还给父组件..
感谢您的帮助
【问题讨论】:
标签: javascript reactjs meteor state