在块范围之外的反应访问const

时间:2018-04-08 21:42:10

标签: reactjs scope const block

您好我正在尝试访问一个const,它在componentDidMount()的块范围内分配了一个值,并在一个不同的方法中分配它,但我很难实现。我已经尝试将其保存到州,但是'某些东西'未在renderTable()

中定义

我的代码如下:

// Pseudo code:
class tableView extends Component {

  componentDidMount() {
    .......
      const something = 'blah';
      this.setState({something});
  }
  renderTable() {
    const tableData = [
      {
        name: 'Item 1',
        data: this.state.something,
      },

    ];

    return {
        ......
    };
  }

是否有其他方法允许我访问renderTable()中的const?

2 个答案:

答案 0 :(得分:2)

请注意,您收到not defined错误的原因是因为您尚未初始化该组件state。如果您前往console.log(this.state),则值为null。因此,您尝试访问.something中的null,这将无效。

在React中,有状态组件必须初始化其状态。初始化状态的一种方法是在构造函数中(检查下面发布的链接)。

class App extends React.Component {
    // THIS IS WHAT YOU ARE MISSING!
    constructor() {
        super()
        this.state = {
          something: '',
        }
    }
    // END

    componentDidMount() {
        const something = 'blah';
        this.setState({ something });
    }

    renderTable() {
        const tableData = [
          {
            name: 'Item 1',
            data: this.state.something,
          },
        ];

        return ...
  }

  ...
}

阅读https://reactjs.org/docs/state-and-lifecycle.html(Ctrl + F'构造函数')以获取更多信息。

答案 1 :(得分:1)

state = {
tableData : [
      {
        name: 'Item 1',
        data: this.state.something,
      },

    ],
 something:'this is something on mount it will change to blah',

}


 componentDidMount() {
.......
  const something = 'blah';
  this.setState({something});
}

  renderTable() {
   const {tableData} = this.state;

    return {
        ......
    };
  }

使用this.state.tableData进行访问或使用解构。