javascript - ReactJS : this. setState 不是一个函数?

标签 javascript reactjs setstate

我是 ReactJS 新手,遇到错误“this.setState 不是函数”。

constructor() {
    super();

    this.state = {
        visible: false,
        navLinesShow: true
    };

    this.navOpen = this.navOpen.bind(this)

}

navOpen() {
    this.setState({
        navStatus: "navShow",
        navLinesShow: false
    });

    if ( this.state.visible === false) {

        setTimeout(function (){

            this.setState({
                visible: true
             });

        }, 3000);

    }

我已将 this.navOpen = this.navOpen.bind(this) 添加到构造函数中。所以我猜问题出在 setTimeout 函数上。

可能的修复是什么?

谢谢。

最佳答案

是的,问题是 setTimeout 函数“this”中的 setTimeout 引用了函数本身:所以解决方案是典型的 var that = this :

navOpen() {
this.setState({
    navStatus: "navShow",
    navLinesShow: false
});
if ( this.state.visible === false) {
 var that = this;
    setTimeout(function (){
        that.setState({
            visible: true
         });
    }, 3000);
}

关于javascript - ReactJS : this. setState 不是一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124293/

相关文章:

javascript - yEnc 用于二进制 websocket 数据

javascript - 能否使内部链接在客户端生成的 HTML 页面中起作用?

javascript - 我可以使用映射函数的索引作为包含动态不可预测文本的 React 组件的键吗?

javascript - 使用 useEffect 时无限循环

image - 失败时重新加载缓存的网络图像

reactjs - 如何将复选框值添加到reactJS中的setState数组

javascript - 从输入复制时获取文本

javascript - array_contains 对象查询

javascript - 如何在 React 中有条件地设置状态?

javascript - React Native 在 React Native Web 中将 this.state.input 存储为 Undefined Work 被罚款