javascript – 在react js中声明变量的位置

前端之家收集整理的这篇文章主要介绍了javascript – 在react js中声明变量的位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在react-js类中声明一个变量.变量应该可以在不同的函数中访问.这是我的代码
class MyContainer extends Component {
    constructor(props) {
        super(props);
        this.testVarible= "this is a test";  // I declare the variable here
    }
    onMove() {
        console.log(this.testVarible); //I try to access it here
    }
}

在onMove上,this.test的值未定义.我知道我可以将值放在状态上,但我不想这样做,因为每次值改变时,都会调用render(),这是不必要的.我是新手做出反应,我做错了什么?

解决方法

在React中使用ES6语法不会将此绑定到用户定义的函数,但是它会将此绑定到组件生命周期方法.

因此,您声明的函数将不具有与该类相同的上下文并尝试访问它将无法满足您的期望.

获取类的上下文,您必须绑定函数的上下文或使用箭头函数.

方法1绑定上下文:

class MyContainer extends Component {

    constructor(props) {
        super(props);
        this.onMove = this.onMove.bind(this);
        this.testVarible= "this is a test";
    }

    onMove() {
        console.log(this.testVarible);
    }
}

方法2绑定上下文:

class MyContainer extends Component {

    constructor(props) {
        super(props);
        this.testVarible= "this is a test";
    }

    onMove = () => {
        console.log(this.testVarible);
    }
}

方法2是我的首选方式,但您可以自由选择.

更新:您还可以在没有构造函数的情况下在类上创建属性

class MyContainer extends Component {

    testVarible= "this is a test";

    onMove = () => {
        console.log(this.testVarible);
    }
}

注意如果还要更新视图,则应在设置或更改值时使用state和setState方法.

例:

class MyContainer extends Component {

    state = { testVarible: "this is a test" };

    onMove = () => {
        console.log(this.state.testVarible);
        this.setState({ testVarible: "new value" });
    }
}

猜你在找的JavaScript相关文章