reactjs - 从渲染函数访问状态

标签 reactjs state

所以我需要运行这行代码:

var vehicles = this.state.vehicles;

在渲染函数中:

render: function(){...}

我目前收到此错误:

Uncaught (in promise) TypeError: Cannot read property 'state' of undefined

尽管这条线有效:

this.setState({vehicles: json})

这也是代码的一部分:

getInitialState: function(){
    this.render = this.render.bind(this)
    return {
      vehicles: []
    }
}

如何修复此错误并访问数据?

最佳答案

您没有绑定(bind)渲染函数。我假设您正在使用 React.createClass 创建组件,因为您正在使用 getInitialState 来初始化状态。使用 React.createClass,React 会自动为您进行绑定(bind)。

即使您通过扩展 React.Component 创建组件,渲染方法和生命周期函数也会自动绑定(bind)到 React 组件上下文。

您的getInitialState函数将只是

getInitialState: function(){
    return {
      vehicles: []
    }
  }

示例工作片段

var App = React.createClass({
    getInitialState: function() {
      console.log(this);
      return {count: 0}
    },
    render: function() {
      return <div>Count:{this.state.count}</div>
    }
})

ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script>
<div id="app"></div>

关于reactjs - 从渲染函数访问状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445298/

相关文章:

node.js - 有没有办法在没有 10 秒加载时间的情况下处理状态代码 401 的 React useQuery?

flutter - 从子级弹出时,根小部件不会重建

javascript - 样式化组件 - 具有相同样式的两个不同元素

reactjs - 如果更新 MapComponent 状态,则会出现性能问题

javascript - 当有多个按钮使用相同功能时,使用单击处理程序更改按钮的颜色

javascript - 为什么我的状态没有在此组件中设置

c# - 使用 asp.net 和状态服务器在两个网站之间共享 session

state - 使用 PBS 在 super 计算机上暂停、保存到磁盘、重新启动长时间作业

node.js - 使用 --生产选项和对等依赖项进行 npm install

javascript - 在 Node js "secret should be set"和 React "npm ERR! code ELIFECYCLE"中出现错误