首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在函数中访问道具?

如何在函数中访问道具?
EN

Stack Overflow用户
提问于 2019-06-04 05:18:27
回答 1查看 37关注 0票数 0

我在从函数访问道具时遇到了问题。

以下是我的代码(包含所有这些内容的组件也是一个函数):

代码语言:javascript
复制
const [anchorEl, setAnchorEl] = React.useState(null);

function handleClick(event) {
    setAnchorEl(event.currentTarget);
}

function handleClose(val) {
    setAnchorEl(null);
    this.props.updateSelected(val)
}

return (
    <div>
        <IconButton onClick={handleClick}>
            <FilterListIcon/>
        </IconButton>
        <Menu
            id="simple-menu"
            anchorEl={anchorEl}
            keepMounted
            open={Boolean(anchorEl)}
            onClose={handleClose}
        >
            <MenuItem onClick={() => {handleClose(1).bind(this)}}>Содержит текст</MenuItem>
            <MenuItem onClick={() => {handleClose(2)}}>Не содержит текст</MenuItem>
            <MenuItem onClick={() => {handleClose(3)}}>Начинается с</MenuItem>
            <MenuItem onClick={() => {handleClose(4)}}>Заканчивается на</MenuItem>
        </Menu>
    </div>

正如你所见,我已经尝试过绑定,但它不起作用。

下面是我如何将这个属性从另一个组件传递给组件:

代码语言:javascript
复制
<FilterOptions updateSelected={this.updateSelectedValue}/>

以及道具本身:

代码语言:javascript
复制
updateSelectedValue = async (val) => {
    await this.setState({selectedValue: val});
    console.log(this.state.selectedValue)
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 05:22:59

您可以从函数组件参数中解构属性。由于所有其他函数都是在组件中定义的,因此您可以从任何地方访问该属性。

我将为您的组件命名为Test:

代码语言:javascript
复制
const Test = ({ updateSelected }) => {

    const [anchorEl, setAnchorEl] = React.useState(null);

    function handleClick(event) {
        setAnchorEl(event.currentTarget);
    }

    function handleClose(val) {
        setAnchorEl(null);
        updateSelected(val)
    }

    return (
        <div>
            <IconButton onClick={handleClick}>
                <FilterListIcon/>
            </IconButton>
            <Menu
                id="simple-menu"
                anchorEl={anchorEl}
                keepMounted
                open={Boolean(anchorEl)}
                onClose={handleClose}
            >
                <MenuItem onClick={() => {handleClose(1).bind(this)}}>Содержит текст</MenuItem>
                <MenuItem onClick={() => {handleClose(2)}}>Не содержит текст</MenuItem>
                <MenuItem onClick={() => {handleClose(3)}}>Начинается с</MenuItem>
                <MenuItem onClick={() => {handleClose(4)}}>Заканчивается на</MenuItem>
            </Menu>
        </div>

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56434662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档