javascript/redux:获取状态时如何避免null?

javascript/redux:获取状态时如何避免null?,javascript,redux,Javascript,Redux,假设我有一个这样的减速器: export const fetchStuff = (state, action) => { const s = state || someDefaultState switch (action.type) { case FETCH_STUFF: return {...s, isFetching: true} case SET_STUFF: return {...s

假设我有一个这样的减速器:

export const fetchStuff = (state, action) => {
    const s = state || someDefaultState
    switch (action.type) {
        case FETCH_STUFF:
            return {...s, isFetching: true} 
        case SET_STUFF:
            return {...s, isFetching: false, stuff: action.values}
        default:
            return s
    }
}
在这种情况下,如果
actions.values
具有
null
的对象,它们将很难在我的组件中处理,因为我必须手动确保组件没有传递null prop,然后还必须手动处理组件中某处的null字段

const component = ({ prop }) => {
    return {
        <div>
          <span>{prop.testnull ? '' : prop.testnull}</span>
        <div
    }
}

const mapStateToProps = (state) => {
    const p = prop || someDefaultProp
    return {
        prop: state.prop
    }
}
const组件=({prop})=>{
返回{
{prop.testnull?'':prop.testnull}
{
常数p=prop | | someDefaultProp
返回{
道具:state.prop
}
}
在本例中,这似乎很容易,但我发现管理更大的组件/组件集是一件痛苦的事情。这样做的惯用方法是什么?我必须咬紧牙关,在组件和
MapStateTrops
中管理它吗?还是有更好的方法在reducer中管理它

编辑:


我应该澄清一下,我并不是在试图处理
状态
的情况,而是在获取状态时,如果状态设置为空,那么一些属性就会被设置为空

,我们已经使用了一些类似的解决方案,并且发现这是一种很好的方法来处理这个用例ucers.Lodash的
\uU3.get
是一个很好的解决方案,可以为减速器中的多级get提供默认值:

获取(对象,路径,[defaultValue])
  • 对象
    (对象)
    :要查询的对象
  • path
    (数组|字符串)
    :要获取的属性的路径
  • [defaultValue]
    (*)
    :为
    未定义的
    解析值返回的值
例如:

const testValue=get(操作,'values.test',{});

const s=state | | someDefaultState您没有使用const s,而是使用可以为null的state,这是一个(现已修复)在我的示例中输入错误,但问题仍然存在,即使它是正确的…您可以为
stuff
定义默认值,而不是将null传递给
action.values
,在将其设置为默认值之前检查它是否为null。例如:
返回{…s,isFetching:false,stuff:action.values?action.values:[]}