设置道具默认值的最佳方法是什么?
What is the best way to set default value of Props?
我的应用程序中有一些道具是从 reducer-selector 接收的。
我想知道,
我应该在下面提到的所有地方为道具设置默认值吗?
- 默认道具
- 在减速器中
- 在选择器中
或者我应该只在这 3 个地方中的 1 个定义默认值,为什么?
这真的取决于上下文。
我建议使用 ES6 默认参数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters
例如
const MyComponent = props => {
const { name = 'default name' } = props;
return (
<>
{name}
</>
)
}
同样的原则适用于你的减速器:
例如
function myReducer(state = { name: 'default name' }, action) {
switch (action.type) {}
}
此方法适用于所有函数。
或者,您也可以对 React 组件使用 Component.defaultProps
。
建议只在一处设置默认值。因为如果它设置在一个地方,你就不必在不同的组件、选择器等中一次又一次地打扰。这也将避免由于默认值而导致的错误。
- at defaultProps:如果你设置了 defaultProps,如果在多个组件中使用了 prop,你最终会在多个组件中设置默认值。如果您错过了 UI.
上显示的结果不一致
- in selector:如果您在多个选择器中使用商店中的相同道具,则必须在返回结果之前设置默认值。又不是一个好方法。
- in reducer:这是 prop 将被设置为 store 的地方。一旦你设置了默认值,它将被用于所有组件,选择器,没有任何变化。
我认为,考虑到可扩展的应用程序,在 reduce 中设置看起来更有前途和稳定的方法。
理想情况下,您应该只在一个公共位置设置默认道具,而不是在您的代码中的所有地方,因为如果您将来必须更改逻辑,将很难维护。
在选择器中使用默认值给您带来了一个优势,即您不必担心每次更新都会在 reducer 中重置值,并且您可以记住使用该值。
我的应用程序中有一些道具是从 reducer-selector 接收的。
我想知道, 我应该在下面提到的所有地方为道具设置默认值吗?
- 默认道具
- 在减速器中
- 在选择器中
或者我应该只在这 3 个地方中的 1 个定义默认值,为什么?
这真的取决于上下文。 我建议使用 ES6 默认参数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters
例如
const MyComponent = props => {
const { name = 'default name' } = props;
return (
<>
{name}
</>
)
}
同样的原则适用于你的减速器:
例如
function myReducer(state = { name: 'default name' }, action) {
switch (action.type) {}
}
此方法适用于所有函数。
或者,您也可以对 React 组件使用 Component.defaultProps
。
建议只在一处设置默认值。因为如果它设置在一个地方,你就不必在不同的组件、选择器等中一次又一次地打扰。这也将避免由于默认值而导致的错误。
- at defaultProps:如果你设置了 defaultProps,如果在多个组件中使用了 prop,你最终会在多个组件中设置默认值。如果您错过了 UI. 上显示的结果不一致
- in selector:如果您在多个选择器中使用商店中的相同道具,则必须在返回结果之前设置默认值。又不是一个好方法。
- in reducer:这是 prop 将被设置为 store 的地方。一旦你设置了默认值,它将被用于所有组件,选择器,没有任何变化。
我认为,考虑到可扩展的应用程序,在 reduce 中设置看起来更有前途和稳定的方法。
理想情况下,您应该只在一个公共位置设置默认道具,而不是在您的代码中的所有地方,因为如果您将来必须更改逻辑,将很难维护。
在选择器中使用默认值给您带来了一个优势,即您不必担心每次更新都会在 reducer 中重置值,并且您可以记住使用该值。