记住以下代码:

var Component = React.createClass({

    getInitialState: function () {
        return {position: 0};    
    },

    componentDidMount: function () {
        setTimeout(this.setState({position: 1}), 3000);
    },

    render: function () {
         return (
            <div className="component">
                {this.state.position}
            </div>
         ); 
    }

});

ReactDOM.render(
    <Component />,
    document.getElementById('main')
);

难道状态不应该在3秒钟后改变吗?它马上就变了.

我在这里的主要目标是每3秒改变一次状态(setInterval()),但由于它不起作用,我try 了setTimeout(),它也不起作用.这上面有灯吗?谢谢

推荐答案

setTimeout(
    function() {
        this.setState({ position: 1 });
    }
    .bind(this),
    3000
);

否则,您将通过setStatesetTimeout的结果.

您还可以使用ES6箭头功能来避免使用this关键字:

setTimeout(
  () => this.setState({ position: 1 }), 
  3000
);

Reactjs相关问答推荐

如何使用React Router创建响应式主详细信息应用程序?

呈现组件元素(MAP)中的问题

条件索引路由

使用Overpass API Endpoint计算 map 上的面积

以下代码是否存在安全问题?

为什么登录错误和密码在创建Reaction-Hook-Form后立即被删除?

FireBase未与Reaction应用程序连接

点击页脚链接时,如何更改ReactJS导航栏中的活动菜单项(样式为Tailwind CSS)?

UseEffect 似乎不适用于页面的首次渲染

将 useRef 与 useImperativeHandle 一起使用时,React 不会重新渲染

组件安装后调用自定义钩子

如何解决使用react-hook-form和yup动态创建的输入不集中的问题

在Vite React上获取Amplify的环境变量

React - 错误边界未捕获错误

如何从 React Redux store 中删除特定项目?

调用 Statsig.updateUser 时 UI 不呈现

渲染的钩子比预期的少.这可能是由 React Hooks 中意外的提前返回语句引起的

交换键仍然引入了 fresh 的 DOM 元素

在渲染不显示子元素之后,再次渲染时,子元素状态数据完全消失了.为什么会这样以及如何防止它发生?

为什么这两个 div 的渲染方式不同?