【发布时间】:2020-08-14 15:04:34
【问题描述】:
当你在 onClick 中改变状态时,为什么整个 react 组件会重新渲染?
例如:https://codesandbox.io/s/vibrant-firefly-sgk5g?file=/src/App.js
当您单击数字时,整个组件会重新渲染,如果您从 on click 函数中删除 setCount,它就可以正常工作
组件背后的想法是为您单击的数字添加一个“活动”类,它更新了一个随机计数器,该计数器阻止添加“活动”类,因为它重新呈现整个组件
编辑:这里也有代码
import React, { useState } from "react";
const Hours = () => {
const days = [1, 2, 3, 4, 5, 6];
const [count, setCount] = useState(1);
const TestClick = (e, item) => {
setCount(count + 1);
e.currentTarget.className = "active";
};
const HandleHours = () => {
let block = <span />;
if (days) {
block = days.map((hour, index) => {
return (
<span
style={{ display: "block" }}
onClick={e => {
TestClick(e, hour);
}}
className={`col-md-4`} key={index}>
{hour}
</span>
);
});
}
return block;
};
return (
<div>
<HandleHours />
</div>
);
};
export default Hours;
【问题讨论】:
-
您在寻找不同的答案吗?
标签: reactjs