Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用state.concat时如何分配唯一密钥?_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 使用state.concat时如何分配唯一密钥?

Javascript 使用state.concat时如何分配唯一密钥?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我是一个新的反应redux。我试图分配一个唯一的密钥,而不是按数字(如0,1,2,3)的顺序排列 目前这是我在使用state.concat时所拥有的 export const orders = (state = [],action)=> { const {type,payload} = action; switch(type) { case "NEW_ORDER" : const {n

我是一个新的反应redux。我试图分配一个唯一的密钥,而不是按数字(如0,1,2,3)的顺序排列

目前这是我在使用state.concat时所拥有的

export const orders = (state = [],action)=> {


    const  {type,payload} = action;


        switch(type) {

            case "NEW_ORDER" :

            const {new_order} = payload;




                const new_state =  state.concat(new_order);
                console.log(new_state);


                return new_state;


        }

        return state


}
这就是我得到的回报

0: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBfQItBHB4FOMI", merchant_customer_id: "cus_If4OD2yIeB6B", …}
1: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJtBHB4FOMI", merchant_customer_id: "cus_If4OD2NeB", …}
2: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOBHB4FOMI", merchant_customer_id: "cus_If4OD2B6B", …}
3: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOQItFOMI", merchant_customer_id: "cus_If4OD2yB", …}

instead i would like to have 



2938: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOQItBHB4FOMI", merchant_customer_id: "cus_If4OD2yIoNeB6B", …}
3942: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOQItBHB4FOMI", merchant_customer_id: "cus_If4OD2yIoNeB6B", …}
3932: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOQItBHB4FOMI", merchant_customer_id: "cus_If4OD2yIoNeB6B", …}
3939: {store_id: "1", company_id: "1", customer_id: "90694", trans_id: "pm_1I3kFGBf1HJEOQItBHB4FOMI", merchant_customer_id: "cus_If4OD2yIoNeB6B", …}

Any help would be really appreciated!

如果您希望您的项目在此会话中具有唯一id,则可以执行以下操作:

//IIFE creating id
export const id = ((id) => () => id++)(1);
//in your reducer you imported the id function
const new_state = state.concat({ ...new_order, id: id() });
当刷新页面时重新创建状态时,此选项有效。如果您保持您的状态(如redux persist),则将id计数器保存在state中,并在每次使用它为某个对象分配id时递增它

如果订单保存在数据库中,则使用该数据库为您创建一个id。

试试这个

state=[{store_id:“1”、company_id:“1”、customer_id:“90694”、trans_id:“pm_1I3kFGBfQItBHB4FOMI”、merchant_customer_id:“cus_If4OD2yIeB6B”}
,{门店id:“1”、公司id:“1”、客户id:“90694”、交易id:“pm_1I3KfGB1HJTB4FOMI”、商户id:“客户id:“cus_If4OD2NeB”}
,{store_id:“1”,company_id:“1”,customer_id:“90694”,trans_id:“pm_1i3kfgb1hjeob4fomi”,merchant_customer_id:“cus_If4OD2B6B”},{store_id:“1”,customer_id:“90694”,trans_id:“pm_1i3kfgb1hjeokitfomi”,merchant_customer_id:“cus if4od2b”]
新订单={store_id:“1”、company_id:“1”、customer_id:“90694”、trans_id:“pm_1i3kfgbfqitbb4fomi”、merchant_customer_id:“cus_If4OD2yIeB6B”}
new_state=state.concat({…new_order,trans_id:'Assign new id',merchant_customer_id:'Assign new id'});

log(新状态)
这些是数组索引,不是ID。数组是0索引的。当新的订单元素被添加到状态时,您想做什么,添加一个唯一的标识符?