我想根据 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();
}
关于javascript - 分配给属性的 function() 未在 React Native 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426268/