由于某种原因,我不明白,我似乎无法在渲染器中获取状态值,起初我以为这是一个范围问题,但即使更改为var后,我的变量也未定义。
constructor(props) {
super(props);
this.state = {
stuff: {}
};
componentDidMount(){
this.getatuff.then( (result) =>{
this.setState({
stuff: result.items[0]
});
});
console.log('REACT Coveo component DOM loaded');
}
render() {
var ReactMarkdown = require('react-markdown');
var project = this.state.stuff;
debugger;
if(!Object.entries(project).length === 0){
var asd = project.body[1].value; <---UNDEFINED
return (
<div className="block">
<ReactMarkdown source={asd} />
</div>
);
}
为什么在渲染器中未定义我的Object数组值?
注意:屏幕快照中的两个const变量都更改为var,并且该行为仍然存在。
答案 0 :(得分:0)
您需要在班级内或state
内定义constructor()
:
constructor(props) {
super(props);
this.state = {
project: // something
}
}
componentDidMount() {
// etc.
答案 1 :(得分:0)
您的示例尚不清楚要实现的目标,但这可能是以下原因之一:
font-size
上有一个1px
的错字(我想您是想说componentDidUpdate
this.getatuff
似乎是在渲染器上定义的,您的屏幕快照显示它具有键getStuff
和其他键,但可能没有键project
或{{1} }可能不是数组,或者该数组可能仅包含1个值id:5
,而不是两个值body
和body
。我建议您调试[0]
的结构以获得正确的值答案 2 :(得分:0)
您在这里遇到语法错误:if(!Object.entries(project).length === 0)
应该是if (!(Object.entries(project).length === 0))
render() {
var ReactMarkdown = require('react-markdown');
var project = this.state.stuff;
debugger;
if (!(Object.entries(project).length === 0)) {
var asd = project.body[1].value; <---UNDEFINED
return (
<div className="block">
<ReactMarkdown source={asd} />
</div>
);
}