首页 > react 的this.state上的数组为什么push得到的是数字而concat才会返回真实的数组

react 的this.state上的数组为什么push得到的是数字而concat才会返回真实的数组

在学习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;

【热门文章】
【热门文章】