【发布时间】:2020-03-12 06:39:52
【问题描述】:
每次我在 data prop 中获得新数据但组件不会重新渲染,直到我调用 handlePanelSelection()
function StepPanel({ data, getTranslations }) {
const [panelsData, changePanel] = useState(data);
function handlePanelSelection(panelId) {
switch (panelId) {
case 8:
changePanel(getTranslations.NeeSubCategory);
break;
default:
changePanel(data);
break;
}
}
return (
<>
{panelsData.map(details => {
const imgsrc = requireContext('./' + details.image);
return (
<div key={details.id} className="block-list">
<div className="left-block">
<img src={imgsrc} alt="" />
</div>
<div className="right-block">
<h3>{details.title}</h3>
<p>{details.description}</p>
<label htmlFor="radio1" className="radio-btn">
<input
type="radio"
onClick={() => handlePanelSelection(details.id)}
name="radio1"
/>
<span></span>
</label>
</div>
</div>
);
})}
</>
);
}
但是当我像下面这样移除钩子时它可以工作
function StepPanel({ data, getTranslations }) {
return (
<>
{data.map(details => { ... })}
</>
)
}
我想实现一个功能,当我在数据道具中获取新数据时,组件会重新渲染,但当我需要在内部重新渲染时,例如我更改panelId = 8,然后它也会重新渲染,这种方法可行吗?
上面的代码似乎会重新渲染,但每次都使用相同的数据,即它不会每次都更新panelData,尽管每次数据道具都提供了新的更新值
【问题讨论】:
-
请在您的控制台中显示错误。它会有有用的信息。
-
你好@LongNguyen 我已经为这个错误感到安慰,它似乎重新渲染,但panelsData中的数据并没有改变每次它显示相同的结果,虽然数据道具给我更新的价值每-是时候更新我的问题以获取正确的查询了
标签: reactjs react-hooks