我的index.jsx中有以下代码用于主页
toggleDescription(product, success = true) {
if (success) {
this.descriptionText = t('products/product_description', {
name: item.product,
});
this.setState({
open: !open
failure: !success
});
}
---some code here---
return (
<div>
</Description
isOpen={this.state.open}
onRequestClose={this.toggleDescription}
message={this.descriptionText}
isError={failure}
>
<div> --delete and close buttons here-- </div>
</Description>
我有descriptionText的翻译。我正在切换描述组件。当我第一次加载应用程序时,我得到标题中的错误,因为描述文本未定义。我该如何解决这个问题?
答案 0 :(得分:2)
您确实不应该将值直接保存到组件中。除非价值由州管理,否则不会保证孩子们重新渲染。
你应该改变这个;
getInitialState() {
return {
descriptionText: 'default text'
}
},
toggleDescription(product, success = true) {
if (success) {
this.setState({
descriptionText: t('products/product_description', {
name: item.product,
}),
open: !open,
failure: !success
});
},
render() {
return (
<div>
</Description
isOpen={this.state.open}
onRequestClose={this.state.toggleDescription}
message={this.state.descriptionText}
isError={failure}
>
<div> --delete and close buttons here-- </div>
</Description>
答案 1 :(得分:1)
第一个选项是,您可以将this.descriptionText
设置为默认值,例如空字符串或constructor
上的内容
constructor(props) {
super(props);
this.descriptionText = 'some default value or empty string';
}
或者您可以像下面一样使用它,
message={this.descriptionText || 'some default value or empty string'}