与地图操作员互动时,数据处理存在问题吗?

时间:2019-03-06 08:09:12

标签: javascript reactjs

您好,我在React setState中有这样的问题

这是我的数据

this.state = {
            _toDoData :  [
                {id:'1', title:'Lang Tag on Hindi', label:'toDo', priority:'Major', ticketId:'ETUIOPS-1', assignee:'Rohit'},
                {id:'2', title:'Template Meta Tag Change about page', label:'readyForDevelopment', priority:'Critical', ticketId:'ETUIOPS-2', assignee:'Rohit Azad'},
                {id:'3', title:'Currency Converter change', label:'inProgress', priority:'Critical', ticketId:'ETUIOPS-3', assignee:'Rohit Malik'},
                {id:'4', title:'SEO Rule change', label:'inQa', priority:'Critical', ticketId:'ETUIOPS-4', assignee:'Rohit Malik'},
                {id:'5', title:'Implement Live tv', label:'live', priority:'Critical', ticketId:'ETUIOPS-5', assignee:'Rohit Malik'}
            ],
            showTodoText : 'Click to show ToDo items',
            showHideToDo:false,
            TO_DO:[],
            READY_FOR_DEVELOPEMENT:[],
            IN_PROGRESS:[],
            IN_QA:[],
            LIVE:[]
        }

然后我调用此函数

toDoManupulateData = ()=>{
    let allToDoData = this.state._toDoData;
    let TO_DO = [];
    let READY_FOR_DEVELOPEMENT = [];
    let IN_PROGRESS = [];
    let IN_QA = [];
    let LIVE = [];
    allToDoData.map((item)=>{
        if(item.label === 'toDo'){
            TO_DO.push(item);
        }else if(item.label === 'readyForDevelopment'){
            READY_FOR_DEVELOPEMENT.push(item);
        }else if(item.label === 'inProgress'){
            IN_PROGRESS.push(item);
        }else if(item.label === 'inQa'){
            IN_QA.push(item);
        }else if(item.label === 'live'){
            LIVE.push(item);
        }
        return console.log(item);
    });
    console.log(TO_DO,READY_FOR_DEVELOPEMENT,IN_PROGRESS,IN_QA,LIVE);
    return this.setState({
        TO_DO,READY_FOR_DEVELOPEMENT,IN_PROGRESS,IN_QA,LIVE
    });

}

之后,我调用像这样的react函数

componentDidMount(){
    console.log(this.state)
    this.toDoManupulateData();
    console.log(this.state)
}

但是我的状态是一片空白,为什么你可以指导我。

3 个答案:

答案 0 :(得分:4)

nullify是异步的。如果要在更新后记录状态,请使用第二个参数回调。

class Branding < ApplicationRecord
  has_many :agencies, dependent: :nullify
end

答案 1 :(得分:1)

您的toDoManupulateData应该看起来像这样。

>>> header
[('id',), ('attr_1',), ('attr_2',)]
>>> x
[(111, 222, 333), ('aaa', 'bbb', 'ccc'), ('a1', 'b2', 'c3')]
>>> ';'.join(x[0] for x in header)
'id;attr_1;attr_2'
>>> print('\n'.join(';'.join(str(_) for _ in y) for y in zip(*x)))
111;aaa;a1
222;bbb;b2
333;ccc;c3

答案 2 :(得分:1)

首先,我认为您不需要使用Eq方法,而应使用forEach。 setState还会以异步模式更新状态,这意味着setState不会在调用状态后立即更新。如果真的要检查状态,则将状态更新的传递回调函数更新为setState并在那里检查您的状态。

map