Javascript React Redux,如何更改状态中的单个元素?

Javascript React Redux,如何更改状态中的单个元素?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有个问题要问你。。我的redux存储中存储了一个对象,该对象包含其他对象和对象数组。。所以,我需要更新这个对象中的一个字段,并保存整个对象,然后通过传递这个对象发出post请求 我的目标有效载荷是: { name: "test", surname: " test2", option: [ { option1: "option1" }} ] additionalInfo: { location: "street" } 使用输入文本字段在页面中打印每个元素, 如何使函数在更改方法时选择正确的字段

我有个问题要问你。。我的redux存储中存储了一个对象,该对象包含其他对象和对象数组。。所以,我需要更新这个对象中的一个字段,并保存整个对象,然后通过传递这个对象发出post请求

我的目标有效载荷是:

{
name: "test",
surname: " test2",
option: [
{
option1: "option1"
}}
]
additionalInfo: {
location: "street"
}
使用输入文本字段在页面中打印每个元素, 如何使函数在更改方法时选择正确的字段并进行更新

function policies(state = initialState, action) {
  const { type, payload } = action;

  switch (type) {
    case policiesTypes.SET_POLICY_DETAILS:  
      return { ...state, content: payload };

你得把商店派出去。使用onChange中的store.dispatch作为函数编写。这将帮助您更改商店的全局状态。在减速器的开关中,它是switchaction,action对象保存action.type和action.payload。在switch语句中直接传递操作类型时,可能无法获得预期的结果

例如: 在减速器中,将switch语句更改为:

switch(action){
case "YOUR_ACTION":
  return {...state, ...action.payload};
}      
在index.js文件中

这将清除现有对象的值,并使用您提供的新值更新状态。当您在更新onChange时,状态可能也会清除所有以前的键,因此在使用onChange时要小心。

我自己解决了:

case policiesTypes.SET_POLICY_HEADER:
  let content = JSON.parse(JSON.stringify(state.content));
  content.policyHeader = content.policyHeader || {};
  content.policyHeader[action.key] = action.value;
  return { ...state,  content};
和行动:

const setPolicyHeader = (key, value) => ({type: policiesTypes.SET_POLICY_HEADER, key, value});
一旦改变

onChange={ e => dispatch(actions.setPolicyHeader('localPolicyNumber', e.target.value))}

你能用你当前的尝试显示你的减速机吗?这样我们就有了一些东西可以构建了。但是这将取消我的旧存储,我只需要更改一个属性或键,例如additionalInfo.location,并保留其余尚未更新的状态。。我的值是e.target.value,或者当您按下保存按钮时,更新stateLearn-about-spread操作符(JavaScript)。如果您仍然感到困惑,那么在您的swtich case中尝试一下,返回{…state,name:action.payload.name,姓氏:action.payload.姓氏}这将更新状态,它肯定不会取消您现有的状态。我需要做的是不同的:onChange={e=>dispatchactions.prepareToSavePolicy{policyHeader:{riskGrading:e.target.value}case policiesTypes.PREPARE_TO_SAVE_UPDATED_POLICY:return{…state,updatedPolicy:{…state.updatedPolicy,payload};存储已更新,但旧数据已取消
onChange={ e => dispatch(actions.setPolicyHeader('localPolicyNumber', e.target.value))}