reactjs 为什么open的状态为null?

j9per5c4  于 2023-05-17  发布在  React
关注(0)|答案(2)|浏览(121)

我尝试使用一个prop值来设置一个状态,但它一直给我null。prop值具有有效值(布尔值)。
这是子组件的构造函数:

constructor(props: any) {
        super(props);
        this.setState({
            ...this.state,
            customUser: props.customUser,
            open: props.open
        })
    }

如果我记录prop,它会给予我想要的值true。但是当此值用于在构造函数中设置状态时。它将在这里返回null并且不呈现:

render() {
        return (
here  --->    <Dialog open={this.state.open}>
                <DialogTitle>Account Delete</DialogTitle>
                <DialogContent>
                    <p>Are you sure you want to delete your account?</p>
                </DialogContent>
                <DialogActions>
                    <Button variant="contained" color="primary" onClick={() => {
                    }}>Yes</Button>
                    <Button variant="contained" color="secondary" onClick={() => {this.toggleDialog}}>No</Button>
                </DialogActions>
            </Dialog>
        )
    }

我尝试使用不同的命名状态将prop值设置为。但这也没用。

e3bfsja2

e3bfsja21#

正如Andy Ray的回应所说,我使用了setState而不是this. state。更换这个解决了我的问题。谢谢!

50pmv0ei

50pmv0ei2#

尝试使用componentDitMount(或useEffect的较新版本)。

componentDidMount() {
  const { open } = this.props;
  this.setState({
    ...this.state,
    customUser: this.props.customUser,
    open: open || false
  });
}

你可以用componentDidMount这样做。

相关问题