javascript - 使用 React/Redux 在公里和英里之间普遍切换

标签 javascript reactjs redux react-redux

目前,我有一个切换三元表达式的按钮并且它正在工作,但我无法想象为我要显示数据的每一行创建一个单独的三元表达式是最佳实践。

有没有更好的方法可以在整个页面上更改公里和英里?我的 redux 商店包含相同距离的两个版本,这是我目前所拥有的:

const YourDistance = ({distanceInKms, distanceInMiles}) => {
const [isToggled, setToggled] = useState(false)

return (
    <div>
        { isToggled ? <h2>{distanceInKms}</h2> : <h2>{distanceInMiles}</h2> }
        <button onClick={() => setToggled(!isToggled)}>Convert</button>
    </div>
)};

如果有人有任何想法,我将不胜感激。

最佳答案

您可以将单元存储在 redux 状态中。这样您就可以拥有一个选择器函数,该函数根据州内的距离和州内的单位返回适当的值。您可以在任何地方调用 const distance = useSelector(selectDistance)

选择器可能类似于:

const selectDistance = (state) => {
  const units = state.units;
  const {distanceInKms, distanceInMiles} = state.distance;
  return units === "miles" ? distanceInMiles : distanceInKms;
}

所以我们仍然有一个三元组,但现在它只是在一个地方而不是到处都是。

显然,您需要发送一个 Action 来切换单位。

关于javascript - 使用 React/Redux 在公里和英里之间普遍切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66416448/

相关文章:

javascript - 打开 FancyBox 后隐藏一个 DIV

reactjs - 将 useState 与具有多个 bool 字段的对象 react

reactjs - React-Bootstrap 中的间距和边距实用程序

javascript - 如果我们已经有了dispatch作为props,为什么还需要mapDispatchToProps呢?

javascript - 返回 executeSQL 函数

用于 2 个选择的 JavaScript 更改链接函数

javascript - 具有 API 后端数据预加载的单页应用程序

reactjs - Typescript,基于字符串文字类型值的条件类型

reactjs - Apollo 客户端缓存与 Redux

javascript - 将函数添加到队列中以便稍后执行。终极版