【发布时间】:2017-05-20 20:03:37
【问题描述】:
我有一个从 json 填充的 Material UI 子菜单。包含此子菜单数组的主菜单项将根据所选择的内容进行更改。见下图
包含子菜单的主菜单项如下所示
<MenuItem
primaryText={this.state.selectedLanguage.name}
rightIcon={<ArrowDropRight />}
style={{userMenuItem}}
leftIcon={
<img className="flag" src={this.state.selectedLanguage.icon}/>
}
menuItems={languageMenu} //see below
/>
嵌套菜单来自这里
const languageMenu =
<div>
{languages.map((item, index) => (
<MenuItem
key={index}
onClick={this.onLanguageChange}
primaryText={languages[index].name}
style={{userMenuItem}}
leftIcon={
<img className="flag" src={languages[index].icon}/>
}/>
))}
</div>
最终,数据存储在这样的 json 中
const languages = [
{
name: 'English',
icon: './assets/images/flags/uk.png',
link: ''
},
{
name: 'Español',
icon: './assets/images/flags/Spain.png',
link: ''
},
{
name: 'Français',
icon: './assets/images/flags/France.png',
link: ''
}
...
];
在我对 React 的理解不佳的情况下,我在构造函数状态下为所选语言创建了一个初始值
constructor(props) {
super(props);
this.state = {
selectedLanguage:{
name:"English",
icon:"./assets/images/flags/uk.png",
},
}
}
以及一个处理变化的函数(这是我的问题,我敢肯定)
onLanguageChange = () => this.setState(
{
selectedLanguage: this.state.selectedLanguage.name,
}
);
我需要正确构建这个onChange() 函数以根据单击的子菜单更改状态。这将为我构建其他属性奠定基础,这些属性也会在点击时触发翻译功能
任何帮助将不胜感激。谢谢
【问题讨论】:
-
将状态绑定到 MainMenu 按钮,就像您在 LanguageMenu
<img className="flag" src={this.state.selectedLanguage.icon}/>中如何在状态更改时执行此操作一样,通知并更改。阅读facebook.github.io/react-native/docs/state.html -
@botika 我改变了一些东西。我能够按状态启动值,这很好,因为它现在读取状态。我不知道如何构建 onLanguageChange() 以便它更改状态值
标签: reactjs material-ui