我一个简单的待办事项应用工作实践我的反应能力。我有3个组件,我将在下面向您展示。this.prop没有得到正确的,虽然
的问题是,我的道具是没有得到低谷正确的,因为当onChange
方法设置的State
我会告诉你它不仅是公认的:
这里是我的AddTodoComponent:
import React, { Component } from 'react';
import '../../App.css';
import update from 'react-addons-update';
import TodoItemComponent from '../TodoItemComponent/TodoItemComponent';
class AddTodoComponent extends Component {
constructor(props) {
super(props);
this.state = {
todo: '',
todoArray: []
};
}
addTodo(e){
console.log('e', e.target.value, 'todoArray', this.state.todoArray);
this.state.todoArray.push(e.target.value);
this.setState({ todo: this.state.todo });
// this.state.todoArray.push(<TodoItemComponent todo={this.state.todo} onDelete={this.delete}></TodoItemComponent>);
}
delete(index){
console.log('thisIndex', index);
this.setState({
todoArray: update(this.state.todoArray, {$splice: [[index, 1]]})
});
}
handleChange(e){
this.setState({ todo: e.target.value });
}
render() {
return (
<div>
<div className="input-group m-b-md">
<input type="text" className="form-control add-todo" placeholder="Todo..." value={this.state.todo} onChange={this.handleChange.bind(this)} />
<span className="input-group-btn">
<button className="btn btn-react" type="button" onClick={this.addTodo.bind(this)}> Add</button>
</span>
</div>
<ul className="list-group">
{this.state.todoArray.map((todo, index) => (
<TodoItemComponent todo={this.state.todo} key={index} onDelete={this.delete.bind(this, index)}></TodoItemComponent>
))}
</ul>
</div>
);
}
}
export default AddTodoComponent;
而且这里是TodoItemComponent.jsx:
import React, { Component } from 'react';
import '../../App.css';
class TodoItemComponent extends Component {
deleteTodo(todo){
console.log('deleteTodo', this.props.todo);
this.props.onDelete(this.props.todo);
}
render() {
console.log('this.props.todo', this.props.todo);
return (
<div>
<li className="list-group-item todo-item">
<button className="btn btn-xs btn-react btn-circle m-r-md">
<span className="fa fa-check"></span>
</button>
{this.props.todo}
<span className="pull-right">
<button className="btn btn-xs btn-react btn-circle m-r-xs">
<span className="fa fa-pencil-square-o"></span>
</button>
<button className="btn btn-xs btn-react btn-circle" onClick={() => this.deleteTodo(this.props.todo)}>
<span className="fa fa-trash-o"></span>
</button>
</span>
</li>
</div>
);
}
}
export default TodoItemComponent;
这里this.props.todo
没有给我回应所有..我はNT中的输入字段的值传递波谷到TodoItemComponent
显示,当我点击添加。
最小,工作示例将是有益的。代码片段或codesandbox :) –
@Kinduser你也许有一个工作react.jsx片段? – Sreinieren
Codesandbox有一个设置环境,准备工作:) –