javascript - 未定义的变量,在渲染方法 React 中的 if/else 内部分配
问题描述
我有一个简单的组件,它从父级获取道具:
render(){
const {message} = this.props;
if(message){
let {title, text} = message;
} else {
let title= 56;
let text= 34;
console.log('inside')
console.log(title);
}
console.log('outside');
console.log(lat);
return( // JSX) // The vars are not used
当我运行它时,它message
是未定义的,我在控制台中看到 -inside
和54
. 紧接着outside
和ReferenceError: title is not defined
。let title= 56;
如果我在 if/else 外部复制/粘贴,一切正常。对于所有情况下的调试message
都是未定义的。这是为什么 ?
解决方案
定义的变量let
是块范围的,因此它们不会存在于if
/else
块之外。if
您可以在/之前定义它们,然后在else
那里为它们分配值。
class App extends React.Component {
render() {
const { message } = this.props;
let title, text;
if (message) {
title = message.title;
text = message.text;
} else {
title = 56;
text = 34;
}
return <>{/* ... */}</>;
}
}
推荐阅读
- javascript - 我如何连接选择和输入字段的值并与 JavaScript 一起显示
- python - Image Captioning im2txt 模型的对象创建,避免为每个图像加载检查点
- python - 检查列内的字符串错误行为 - Pandas
- google-cloud-platform - 'transcirbe_steaming_infinite.py' 麦克风设置(多通道)会影响响应的到达时间吗?
- ruby - 如何在解释文件时让 ruby 在类中执行代码的特性
- r - 模拟 AR (1) 模型
- python - 数据框索引 groupby 错误 ValueError: 'GL' 既是索引级别又是列标签
- r - 如何在 R 中显示箱线图的各个点?
- css - 运行 npm run scss
- reactjs - React Markdown - 如何将自定义简码呈现到组件中