【问题标题】:React-Redux, cannot set a value to an empty stringReact-Redux,无法将值设置为空字符串
【发布时间】:2020-12-15 11:47:41
【问题描述】:

我正在使用 useDispatch 挂钩,但无法将字符串设置为空字符串。它总是将值设置为最后一个字母。

App.tsx

const dispatch = useDispatch();
dispatch(updateLocation(''));

reducers.tsx

const setLocation = (location = "", action: any) => {
  switch (action.type) {
    case "Location":
      return action.value || location;
    default:
      return location;
  }
};

action.tsx

export const updateLocation = (location: string) => {
  return {
    type: "Location",
    value: location,
  };
};

【问题讨论】:

  • 最后一个字母是什么意思?您如何检查您的问题是否存在?
  • 空字符串的计算结果为false,因此如果actions.value 为空字符串,您的条件action.value || location 将始终返回位置

标签: reactjs typescript redux react-redux


【解决方案1】:

由于空字符串是错误的,所以你总是设置位置的值。

您需要更改您的 reduce 代码:

const setLocation = (location = "", action: any) => {
  switch (action.type) {
    case "Location":
      return action.value !== undefined ? action.value : location;
    default:
      return location;
  }
}; 

【讨论】:

    【解决方案2】:

    如果 action.value 是一个空字符串,它将评估为 false,因此返回位置(也就是最后一个字母)而不是空字符串。

    尝试从您的代码中删除“|| location”。

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 2019-10-17
      • 1970-01-01
      • 2020-05-05
      • 2017-11-05
      • 2018-02-17
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      相关资源
      最近更新 更多