简体   繁体   English

子属性值未在Window上更新,但我可以看到它在控制台中得到更新

[英]Child prop value not updated on Window , but i can see it get updated in console

I dont know what i am doing wrong in this code, the prop value 'number' is not updating on front end , although in the console logs it value does get increament. 我不知道我在这段代码中做错了什么,prop值'number'并没有在前端更新,尽管在控制台日志中它的值确实没有变化。

  import React from 'react';
    import { render } from 'react-dom';


    class Parent extends React.Component{
        constructor(props){
            super(props);
            this.number=0;
            this.changeValue=this.changeValue.bind(this);
        }

        changeValue(){
            console.log('-------------this.number',this.number);
            this.number=this.number+1;
        }

        render(){
            return(
                <div>
                    <Child callMe={this.changeValue} increaseNo={this.number}></Child>
                </div>
            )
        }
    }


    class Child extends React.Component{

        render(){
            return(
                <div>
                    <button onClick={this.props.callMe}>CLick Me</button>
                    <h1>{this.props.increaseNo}</h1>
                </div>
            )
        }
    }

    render(<Parent/> , document.getElementById('root'));

You have to store this.number inside the component state , the component will only be re-rendered if its state changes or it receives new props . 您必须将this.number存储在组件state ,只有在组件state改变或收到新的props ,组件才会重新渲染。

class Parent extends React.Component{
    constructor(props){
        super(props);
        this.state = {
           number: 0
        }
        this.changeValue=this.changeValue.bind(this);
    }

    changeValue(){
        this.setState({number: this.state.number + 1});
    }

    render(){
        return(
            <div>
                <Child callMe={this.changeValue} increaseNo={this.state.number}></Child>
            </div>
        )
    }
}


class Child extends React.Component{

    render(){
        return(
            <div>
                <button onClick={this.props.callMe}>CLick Me</button>
                <h1>{this.props.increaseNo}</h1>
            </div>
        )
    }
}

jsfiddle jsfiddle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM