如何在无状态组件中有条件地更新状态?

阿比

我有两个组件。MyButton 和 MyLabel 组件。我创建了 3 个 MyButton 组件和 3 个 MyLabel 组件。每个按钮都有不同的增量值。当您单击按钮时,应更新相应标签而不是所有标签。目前所有的标签都在更新。

function MyButton(props) {
  const onclick = () => {
    props.onNumberIncrement(props.toBeIncremented);
  };
  return <button onClick={onclick}>+{props.toBeIncremented}</button>;
}

const MyLabel = function(props) {
  return <label>&nbsp;&nbsp;&nbsp;&nbsp;{props.counter}</label>;
};

function App(props) {
  const [counter, mySetCounter] = React.useState(0);

  const handleClick = (incrementValue) => {
    mySetCounter(counter + incrementValue);
  };

  return (
    <div>
      <MyButton
        counter={counter}
        onNumberIncrement={handleClick}
        toBeIncremented={5}
      />
      <MyButton
        counter={counter}
        onNumberIncrement={handleClick}
        toBeIncremented={10}
      />
      <MyButton
        counter={counter}
        onNumberIncrement={handleClick}
        toBeIncremented={15}
      />
      <br />
      <MyLabel counter={counter} />
      <MyLabel counter={counter} />
      <MyLabel counter={counter} />
    </div>
  );
}

ReactDOM.render(<App />, document.getElementById('root'));

jsfiddle:点击这里

奥利维尔·布瓦塞

这是使用单个状态变量的另一种解决方案:

function App(props) {
      const [appState, setAppState] = React.useState([
       {value: 0, incrementValue: 5},
       {value: 0, incrementValue: 10},
       {value: 0, incrementValue: 15}
      ]);

      const handleClick = clickedIndex => () => {
        setAppState(
          appState.map((item, index) => clickedIndex !== index ? 
            item : ({...item, value: item.value + item.incrementValue})
          ) 
        );
      };

      return (
        <div>
         {
           appState.map(({value, incrementValue}, index) => (
            <MyButton
              key={index}
              counter={value}
              onNumberIncrement={handleClick(index)}
              toBeIncremented={incrementValue}
            />
           ));
          }
          <br />
          {
            appState.map(
              ({value}, index) => <MyLabel key={index} counter={value} />
            );
          }
         </div>
      );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在R中的数据框中有条件地选择列

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

来自分类Dev

如何使EditorFor有条件地变为只读状态?

来自分类Dev

如何在AngularJS模板中有条件地显示跨度?

来自分类Dev

有条件地设置引导按钮的禁用状态

来自分类Dev

如何处理Django表单中的状态/有条件地修改字段

来自分类Dev

如何在有条件的组件上有条件地添加道具?

来自分类Dev

如何在“组件”页面中有条件地设置第一个InstType

来自分类Dev

我如何有条件地计算本地反应的状态之一?

来自分类Dev

如何在React中有条件地将子组件添加到父组件?

来自分类Dev

在父类传递的事件处理程序中有条件地更新子组件的状态

来自分类Dev

如何在For循环中有条件地更新多个类别的值

来自分类Dev

React Hooks,在onClick函数中有条件地更改状态,在下次单击时更新

来自分类Dev

如何使用React Redux状态有条件地显示和禁用按钮

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

根据React功能组件中的状态变量有条件地设置className

来自分类Dev

React延迟后如何有条件地更改useEffect的状态?

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何在React中有条件地将布局应用于组件

来自分类Dev

如何在redux-form的<Field>中有条件地渲染组件

来自分类Dev

基于状态在React JS中有条件地渲染内容

来自分类Dev

如何在自定义对话框中有条件地显示某些组件?

来自分类Dev

如何在另一个组件中有条件地添加组件

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

在 React 组件中有条件地渲染 <td>

来自分类Dev

如何有条件地呈现状态属性

来自分类Dev

反应:无法有条件地更新状态

Related 相关文章

  1. 1

    如何在R中的数据框中有条件地选择列

  2. 2

    如何在有条件的js中有条件地应用标题

  3. 3

    如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

  4. 4

    如何使EditorFor有条件地变为只读状态?

  5. 5

    如何在AngularJS模板中有条件地显示跨度?

  6. 6

    有条件地设置引导按钮的禁用状态

  7. 7

    如何处理Django表单中的状态/有条件地修改字段

  8. 8

    如何在有条件的组件上有条件地添加道具?

  9. 9

    如何在“组件”页面中有条件地设置第一个InstType

  10. 10

    我如何有条件地计算本地反应的状态之一?

  11. 11

    如何在React中有条件地将子组件添加到父组件?

  12. 12

    在父类传递的事件处理程序中有条件地更新子组件的状态

  13. 13

    如何在For循环中有条件地更新多个类别的值

  14. 14

    React Hooks,在onClick函数中有条件地更改状态,在下次单击时更新

  15. 15

    如何使用React Redux状态有条件地显示和禁用按钮

  16. 16

    如何在Angular中有条件地渲染?

  17. 17

    根据React功能组件中的状态变量有条件地设置className

  18. 18

    React延迟后如何有条件地更改useEffect的状态?

  19. 19

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  20. 20

    如何在React中有条件地将布局应用于组件

  21. 21

    如何在redux-form的<Field>中有条件地渲染组件

  22. 22

    基于状态在React JS中有条件地渲染内容

  23. 23

    如何在自定义对话框中有条件地显示某些组件?

  24. 24

    如何在另一个组件中有条件地添加组件

  25. 25

    如何在Excel中有条件地匹配

  26. 26

    如何在Excel中有条件地VLOOKUP?

  27. 27

    在 React 组件中有条件地渲染 <td>

  28. 28

    如何有条件地呈现状态属性

  29. 29

    反应:无法有条件地更新状态

热门标签

归档