微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何引起对重新渲染复选框的反应

如何解决如何引起对重新渲染复选框的反应

所以,我正在从后端获取数据列表

const [data,setData] = useState([]);
const getDataSet = async () => {
const { data } = await inapp.get('/v1/vcr/getData');
setData(data.payload);

useEffect(() => {
  getData();
},[]);

我正在使用数组映射功能渲染复选框列表 然后,我有一个按钮

const [checked,setChecked] = useState([]);
  const handletoggle = (value) => {
    const currentIndex = checked.indexOf(value);
    const newChecked = [...checked];

    if (currentIndex === -1) {
      newChecked.push(value);
    } else {
      newChecked.splice(currentIndex,1);
    }
    setChecked(newChecked);
  };
  const renderDataCheckBoxes = () => {
    return (
      <div className={classes.inlineChecks}>
        {data.map((row) => {
          return (
            <FormControlLabel
              key={row.id}
              control={
                <CheckBox
                  tabIndex={-1}
                  onClick={() => handletoggle(row.name)}
                  checked={checked.indexOf(row.name) !== -1}
                  checkedIcon={<Check className={classes.checkedIcon} />}
                  icon={<Check className={classes.uncheckedIcon} />}
                  classes={{
                    checked: classes.checked,root: classes.checkRoot,}}
                />
              }
              classes={{ label: classes.label }}
              label={row.name}
            />
          );
        })}
      </div>
    );
  };

我还有一个按钮,将从后端删除选中的项目。问题是,如何使复选框重新呈现以删除删除的项目?

解决方法

这里有4种方法来重新渲染React中的组件,而不必是CheckBox

https://linguinecode.com/post/4-methods-to-re-render-react-component

尽管可以使用,但forceRender()并不推荐在任何地方

,

这是由于我处理删除的方式。我正在使用foreach,显然它会触发等待呼叫,而无需等待。我切换到for..of循环,它的工作原理。请参阅我的其他帖子以获取更多详细信息。

async await not behaving as expected in reactjs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。