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

阿比

我有两个组件。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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

    如何在Excel中有条件地匹配

  10. 10

    如何在Excel中有条件地VLOOKUP?

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档