【问题标题】:How to give precedence to one hook in react?如何在反应中优先考虑一个钩子?
【发布时间】:2021-09-17 06:31:28
【问题描述】:
const handleSelect = (e) => {
 //do something 

}

const handleChange = (e) => {
     setChecked(e.target.checked);
}


 return (
        <Grid
            container
            direction="row"
            justify="center"
            alignItems="center">
            <TreeItem
                onLabelClick={handleSelect}
                nodeId={nodeId}
                label={
                    <div>
                        <Checkbox
                            checked={checked}
                            onChange={handleChange}
                        />
                        {literal}
                    </div>}
                onNodeToggle={handleToggle}
            >
            </TreeItem>
        </Grid>
    )
}

尝试创建带有复选框的 TreeView。我遇到的唯一问题是,当单击复选框时,树也会展开,这不是我想要的行为。

如果选择了 handleChange(复选框),我如何覆盖 onLabelClick 以不执行?

【问题讨论】:

    标签: javascript html reactjs material-ui


    【解决方案1】:

    听起来您可能想用stopPropagation 防止事件冒泡。

    所以你的 handleChange 函数是

    const handleChange = (e) => {
        e.stopPropagation()
        setChecked(e.target.checked);
    }
    

    【讨论】:

    • 这行得通,但问题是 TreeView onLabelClick 在 Checkbox on change 之前首先执行。如何调转订单?
    • 我认为另一种选择是在 handleSelect 中添加一个检查。 const handleSelect = (e) =&gt; { if(checked) return; // do something } 然后在它做任何事情之前把它短路。
    猜你喜欢
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多