Reactjs 将组件重置为模态
我有一个插入到模态中的组件,其中包括一个复选框。每次启动模态时,不会重置组件。我该怎么办?如何强制重置?我使用带有钩子的reactjs。 如何在每次模式打开时触发重置事件? 非常感谢Reactjs 将组件重置为模态,reactjs,react-hooks,react-component,Reactjs,React Hooks,React Component,我有一个插入到模态中的组件,其中包括一个复选框。每次启动模态时,不会重置组件。我该怎么办?如何强制重置?我使用带有钩子的reactjs。 如何在每次模式打开时触发重置事件? 非常感谢 const CheckList = ({title, api, color, onChange }) => { const [items, setItems] = useState([]); let listCheck = []; useEffect(() => {
const CheckList = ({title, api, color, onChange }) => {
const [items, setItems] = useState([]);
let listCheck = [];
useEffect(() => {
axiosApi.get( `${api}`).then((res)=>{
setItems(res.data);
})
}, [])
function handleClick(ev, item) {
if (ev.target.checked) {
listCheck.push(item)
onChange(listCheck);
}
else
{
listCheck = listCheck.filter(riga => {
return (riga.id !== item.id)});
onChange(listCheck);
}
}
return (
<>
<div class="card rd-card-list">
<div class="card-header">
{title}
</div>
<div class="card-content rd-card-content">
<div class="content rd-scroll">
<ul class="rd-ul">
{ items.map( (item) =>
<li class="rd-li" key={item.id}>
<label class="checkbox">
{item.description}
</label>
<input type="checkbox" onClick={(ev) => handleClick(ev, item)}/>
</li>
)
}
</ul>
</div>
</div>
</div>
</>
);
}
export default CheckList;
const清单=({title,api,color,onChange})=>{
const[items,setItems]=useState([]);
让listCheck=[];
useffect(()=>{
获取(`${api}`)。然后((res)=>{
设置项(资源数据);
})
}, [])
功能手柄点击(ev,项目){
如果(ev.目标检查){
listCheck.push(项目)
onChange(列表检查);
}
其他的
{
listCheck=listCheck.filter(riga=>{
返回(riga.id!==item.id)});
onChange(列表检查);
}
}
报税表(
{title}
{items.map((item)=>
-
{item.description}
handleClick(电动汽车,项目)}/>
)
}
);
}
导出默认检查表;
在我的modal.js中
<CheckList title="mytititle" api="/api/users" onChange={(itx) => {
formik.setFieldValue('users', itx)
} }/>
{
formik.setFieldValue('users',itx)
} }/>
React生命周期事件可用于在呈现组件之前执行操作。”构造函数()或“componentDidMount()”可在类组件中用于在呈现组件之前重置数据或任何其他操作
由于您使用的是function component,因此可以使用React挂钩来模拟使用“useEffect()”的生命周期事件。React生命周期事件可用于在呈现组件之前执行操作。”构造函数()或“componentDidMount()”可在类组件中用于在呈现组件之前重置数据或任何其他操作
由于您使用的是function component,因此可以使用React挂钩来模拟使用“useEffect()”的生命周期事件。最简单的方法是在打开模式之前不渲染它:
<div>
{modalOpen &&
<Modal open={modalOpen}>
<CheckList title="mytititle" api="/api/users" onChange={(itx) => {
formik.setFieldValue('users', itx)
} }/>
</Modal>
}
</div>
{modalOpen&&
{
formik.setFieldValue('users',itx)
} }/>
}
因此,无论何时关闭模态,它都将与此组件拥有的任何数据一起从DOM中删除。最简单的方法是在模态打开之前不渲染它:
<div>
{modalOpen &&
<Modal open={modalOpen}>
<CheckList title="mytititle" api="/api/users" onChange={(itx) => {
formik.setFieldValue('users', itx)
} }/>
</Modal>
}
</div>
{modalOpen&&
{
formik.setFieldValue('users',itx)
} }/>
}
因此,每当您关闭模式时,它将与此组件拥有的任何数据一起从DOM中删除。否,该模式下的模式不会从DOM中删除,并且当您再次打开时,字段不会重置。为什么?谢谢,请使用模式代码更新您的问题以及如何调用它。不,该模式下的模式不会从DOM中删除,并且当您再次打开时,字段不会重置。为什么?谢谢,请使用模式代码更新您的问题,以及您如何调用它。