redux:如何处理一些东西返回null的API?

redux:如何处理一些东西返回null的API?,redux,react-redux,Redux,React Redux,如果我正在与一个API交互,该API为一些可能有值或可能没有值的对象返回null,那么我如何使它与还原器协调 示例:应用程序状态 { foo: { foo1: null, foo2: { bar: null, bar2: null } } } 但当内容为空时,服务器将返回以下内容: { foo: null } 但当事物有价值时,它可以返回完整状态: { foo: {

如果我正在与一个API交互,该API为一些可能有值或可能没有值的对象返回null,那么我如何使它与还原器协调

示例:应用程序状态

{
    foo: {
       foo1: null,
       foo2: {
           bar: null,
           bar2: null
       }
    }
}
但当内容为空时,服务器将返回以下内容:

{
    foo: null
}
但当事物有价值时,它可以返回完整状态:

{
    foo: {
       foo1: "somefoo,
       foo2: {
           bar: "barvalue,
           bar2: 27
       }
    }
}
我遇到的问题是,我的还原程序试图从服务器的返回值加载状态,然后我的组件试图从空对象读取状态,结果失败了

编辑:减速器和组件将如下所示。。。因此,组件正在尝试读取一些嵌套的json,由于父对象为null,因此可能返回为不可读。在这种情况下,我知道我可以找到一个解决方案,检查对象是否为null,并插入预定义的初始状态

但是…我的实际示例是一个比这个更大的json对象,我知道它将来会改变,所以我需要一个解决方案,它不会像在这里添加大量逻辑来检查以确保嵌套类中的每个对象都不为空那样脆弱和繁琐

var updateSettings = (settings = jsonShape, action) => {
  swtich (action.type) {
    case UPDATE_SETTINGS: 
      return Object.assign({}), settings, {
        foo2: {
          ...settings.foo2,
          bar: action.newBar
        }
      }
    }
  }

const Component = ({ settings }) => {
  return (
    <div>{ settings.foo2.bar }</div>
  )
}
var updateSettings=(settings=jsonShape,action)=>{
swtich(动作类型){
案例更新\u设置:
返回Object.assign({}),设置{
食物2:{
…settings.foo2,
酒吧:action.newBar
}
}
}
}
常量组件=({settings})=>{
返回(
{settings.foo2.bar}
)
}

请给我看Redux代码、动作调度器和reducer。@PiyushDhamecha我添加了关于reducer的详细信息。我认为lodash具有对对象执行深入检查的功能,也许这会有所帮助。我认为您真正想要做这些检查的地方是在您的组件中,它应该能够处理各种级别的对象为空的情况。一个简单的例子是,如果(foo&&(foo.foo1 | | foo.foo2)&&foo.foo2.blah){do something}我可以在组件或减缩器中处理它,但问题仍然是,要排序的内容混乱不堪,可读性极差,必须有更好的解决方案,当
null
返回时不应用状态更改是一个选项吗?为什么API首先返回
null
?如果这些数据无法使用,也许您根本无法应用它。如果您需要默认值,那么我认为对象回退将是最好的
var foo=Object.assign({},myResponse |{},myDefaultState)