arrays - React - OnClick 显示数组中的下一个元素
问题描述
我有一个名为assignee
. 受让人可以是我在下面列出的数组中的三个名称之一。在启动时,我调用一个返回当前受让人(如果存在受让人)的 API。我将受理人变量设置为我从 API 收到的名称。
我有一个div
显示受让人姓名的元素,当用户单击此元素时,我希望受让人根据列表顺序进行更改。我该如何解决这个问题?
假设我Sara
是从 Api 获取的,现在当我单击我希望受让人更改为的元素时,然后更改Bill
为Steve
,然后更改为Sara
。它应该回到数组的开头并重新迭代。这是解决这个问题的最佳方法还是有更好的方法来解决这个问题?
const users = ["Bill", "Steve", "Sara"];
const [assignee, setAssignee] = useState<string>();
..
const handleAssigneeOnClick = () => {
setAssignee(users[0]);
};
..
<div
className="assignee"
onClick={() => {
handleAssigneeOnClick();
}}
>
<p>{assignee}</p>
</div>
解决方案
我会稍微不同地构造它并将索引存储在状态中。
它检查当前索引是否是最后一个索引,如果是,则返回到开头。否则,它只会添加一个。
然后使用索引打印当前选定的用户。
const {useState, useEffect} = React;
const users = ["Bill", "Steve", "Sara"];
const Example = () => {
const [selected, setSelected] = useState(0);
const handleAssigneeOnClick = () => {
setSelected(prev => {
if (prev === users.length - 1) {
return 0;
} else {
return prev + 1;
}
});
};
return (
<div onClick={handleAssigneeOnClick}>
<p>{users[selected]}</p>
</div>
)
}
ReactDOM.render(<Example />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="root"></div>
推荐阅读
- php - 使用 PHP、MYSql 和 Ajax 的分页无法正常工作
- c++ - 在地图中插入一对键
- mysql - 在 R 中实现 mysql rand() 函数的功能
- plugins - 当您为不同的操作系统创建应用程序快照时,snapcraft nodejs 插件如何处理 Node.js 环境?
- python - 线性回归模型预测功能不起作用
- security - 想知道可以绕过登录认证的网站的症状(目录遍历)
- python - 有没有更好的方法来创建嵌套字典的值列表?
- windows-server-2012-r2 - RDS 会话集合/农场/管理/设置当有主/从类型域时使用哪个帐户?
- mysql - Mysql查询匹配2个条件
- c# - Xpath 查询 cdata