我想根据 Redux 存储中的值显示一个按钮。我要动态传递的按钮属性。
const state = appStore.getState();
let opts = {};
if(state.bottomBar.tabName === 'TEST') {
opts['btn1'] = `${this.btnText()}`; // Returns text
opts['onBtn1Press'] = `${ () => this.addToTest() }`; // Returns function()
} else {
opts['btn1'] = 'Testing';
opts['onBtn1Press'] = `${ () => this.doSomething()}`;
}
我传递了如下属性:
<UiContainer {...opts}>
在UiContainer
组件中,另一个Footer
组件包含如下代码:
<TouchableOpacity onPress={() => onBtn1Press()} disabled={Btn1Disabled} >
<View >
<Text >{btn1}</Text>
</View>
</TouchableOpacity>
如果我打印ops
它
Object {
"btn1": "TEST",
"onBtn1Press": "function () {
return _this4.addToTest();
}",
}
当我单击按钮时,它显示_onBtn1Press()
不是一个函数。
我该如何解决它?
问候
萨尼什。
模板
`${() => this.addToTest()}`
始终返回一个字符串,这就是为什么当您打印值时它周围有"
的原因。
你想定义一个函数
if(state.bottomBar.tabName === 'TEST') {
opts['btn1'] = `${this.btnText()}`; // Returns text
opts['onBtn1Press'] = () => this.addToTest(); // Returns function()
} else {
opts['btn1'] = 'Testing';
opts['onBtn1Press'] = () => this.doSomething();
}