javascript - 更新高阶组件中的 Prop

标签 javascript reactjs recompose

我正在尝试切换单选按钮并将 Prop 更新为它设置的当前值。

我的 Modal 组件正在渲染一个 RadioButton 组件:

<RadioButton
  currentValue={destination}
  name={text.newOpp}
  onChange={onClick}
  value={text.newOpp}
  labelText={text.newOpp}
/>

正在传入 onClick 函数,此时看起来像这样:

export const onClick = ({ destination }) => ({ target }) => {
  let copyDestination = {};
  copyDestination.destination = target.name;
  destination = copyDestination;
  // this doesn't really do anything
};

export default compose(
  ...
  ...
  withProps({ destination: '' }),
  ...
);

RadioButton 使用 recompose 进行了增强,并将此函数作为 prop 传入:

export const checked = ({ currentValue, value }) => {
  return currentValue === value;
};

这就是组件的输入部分的样子:

    <input
      checked={checked}
      className={styles.input}
      id={uniqueIdForHTML}
      name={name}
      onChange={onChange}
      type="radio"
      value={value}
    />

本质上,这应该是这样工作的,当我点击一个单选按钮时,我将其 currentValue 属性更新为 target.name 等于。但我不完全确定如何更新 Prop ,因为不应直接更改它们。

最佳答案

我最终使用 withStateHandler 来创建状态并更新它,我还将我的 onClick 函数的名称更改为 setDestination 所以它更有意义。

export const setDestination = ({ destination }) => ({ target }) => ({
  destination: target.name,
});

export default compose(
  setDisplayName('OpportunityPageFeatures/CopyDestinationModal'),
  withUniqueIDForHTML,
  withStateHandlers({ destination: '' }, { setDestination }),
  consoleLogProps,
);

关于javascript - 更新高阶组件中的 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635989/

相关文章:

javascript - 当在 onClick 处理程序上使用 map 时,内部函数总是获取最后一个元素

javascript - 使用重组时在哪里设置 `setInterval`?

javascript - 使用 HOC 类型增强组件自身的属性?

javascript - 如何使用javascript获取选项标签中的一个值?

javascript - Javascript For 和数组的问题

javascript - 在 JSX 中运行时选择 React 组件的类型

reactjs - 使用 recompose 定义时,React 组件上不存在属性

javascript - onmouseover 和 onmouseout 事件在页面加载时触发,而不是在事件上触发

javascript - 如何使用字符串连接创建正则表达式

javascript - 将属性传递给 DOM 中的 React 组件