在学习reactjs 的时候,自己动手写一个 TodoList ,遇到一个问题,直接上代码
var ToDosBox = React.createClass({
getInitialState:function(){
return {
taskList:[]
}
},
addCallback:function(e,value){
var tasks = this.state.taskList.push({taskName:value,author:'test',time:'10:15'});
//console.log(tasks);
this.setState({taskList:tasks});
},
render:function(){
return (
<div className="todos-box">
<InputBox ref="inputBox" callback={this.addCallback} />
<h3>Todo List</h3>
<ToDosList items={this.state.taskList} />
</div>
)
}
})
var tasks = this.state.taskList.push({taskName:value,author:'test',time:'10:15'});
此处 tasks 返回的是 1 ; 而不是一个数组 ,,将 push 改成 concat 后才能正常返回 ??
求解 ??
其实是对 ECMA 的 array 的 push, contact 方法的理解不对。参考 MDN 的解释:
Array.prototype.push()
方法添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。
Array.prototype.concat()
将传入的数组或非数组值与原数组合并,组成一个新的数组并返回.
push的返回值,本来就不是数组,是新数组的长度。
this.state.taskList.push({taskName:value,author:'test',time:'10:15'});
var tasks = this.state.taskList;