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(() => {

我有一个插入到模态中的组件,其中包括一个复选框。每次启动模态时,不会重置组件。我该怎么办?如何强制重置?我使用带有钩子的reactjs。 如何在每次模式打开时触发重置事件? 非常感谢

    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中删除,并且当您再次打开时,字段不会重置。为什么?谢谢,请使用模式代码更新您的问题,以及您如何调用它。