您好我正在尝试访问一个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?
答案 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
进行访问或使用解构。