У меня есть родительский компонент в React, который отображает список элементов, а также состояние (selectedList), которые дают активный класс этому элементу списка + display другие компоненты в зависимости от активного класса. Это родительский компонент.React: вернуть дочерний новый вставленный элемент родительскому для обновления состояния
В детстве я отображение формы, где я могу установить новый список и событие onSubmit, где я вставить его в коллекции (метеор + Монго)
Проблема в том, что я не могу сделать соотношение между новый элемент (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>
CHILD ELEM (ListForm)
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>
);
}
Тогда, я могу иметь хороший ID в HandleSubmit, но я не знаю, как вернуть его родительскому компоненту.
Спасибо за помощь
Привет, спасибо за ответ, но я не могу установить состояние в родительском, я тоже могу это сделать, но у меня есть ошибка: Исключение при доставке результата вызова 'lists.insert': TypeError: this.selectList is не функция. Если я делаю в parent handleListFormSubmit = (goodId) => { this.setState (listSelected: goodId); } .. У вас есть идея? – guillaumek