把父组件的值赋值给子组件,但子组件不变

//code组件默认显示,点击开始隐藏
//然后点击显示,修改qqqVisible为true,就显示继续
//如果startedVisible为false,点击开始/关闭的操作不同
//现在的问题是我修改了qqqVisible和startedVisible,到QRcode.js就赋值不了aaa和bbb,
//如果不定义aaa和bbb,直接用qqqVisible和startedVisible的状态,就提示undefined,获取不到true和false了

阅读 2.1k
1 个回答

> componentWillReceiveProps(nextProps) {
        this.setState({
            startedVisible: nextProps.startedVisible,
            qqqVisible: nextProps.qqqVisible,
        })
        if(this.state.qqqVisible){
            this.setState({
                aaa: true
            })
        }
        if(this.state.startedVisible){
            this.setState({
                bbb: true
            })
        }else{
            this.setState({
                bbb: false
            })
        }
    }

setState并不是立即执行的,因此这里你在setState之后直接访问this.state.xxx是无法获得this.state的最新状态的,所以对aaabbb的设置无法获得预期效果。
aaabbb的值由startedVisibleqqqVisible决定,而这两个值都是已知的,因此可以直接写在第一个setState里面。

componentWillReceiveProps(nextProps) {
        this.setState({
            startedVisible: nextProps.startedVisible,
            qqqVisible: nextProps.qqqVisible,
            // 直接在这里设置
            aaa:nextProps.qqqVisible,
            bbb:nextProps.startedVisible
        })
        if(this.state.qqqVisible){
            this.setState({
                aaa: true
            })
        }
        if(this.state.startedVisible){
            this.setState({
                bbb: true
            })
        }else{
            this.setState({
                bbb: false
            })
        }
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题