如果我正在与某些对某些可能有或没有价值的对象返回null的API进行交互,我该如何与reducers协调呢?
示例:app state
{
foo: {
foo1: null,
foo2: {
bar: null,
bar2: null
}
}
}
但服务器,当事物为空时,返回:
{
foo: null
}
但是当事物有价值时它可以返回完整状态:
{
foo: {
foo1: "somefoo,
foo2: {
bar: "barvalue,
bar2: 27
}
}
}
我遇到的问题是我的Reducer试图从服务器的返回值加载状态,然后我的组件试图从空对象读取它并且它失败了。
编辑:reducer和组件看起来像这样...所以组件正在尝试读取一些嵌套的json,由于父对象为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>
)
}