javascript - 分配给属性的 function() 未在 React Native 中执行

标签 javascript reactjs react-native react-redux

我想根据 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/

相关文章:

javascript - 如何从 JavaScript 获取 React Native packager ip?

reactjs - 如何在 React Native Camera (RN Camera) 中添加水印文本和图像

javascript - 访问 json 对象中的元素

javascript - 使用 serializeArray() 访问自定义属性

javascript - 从对象属性中删除双引号,除非以数字开头

css - 样式组件也可以在服务器上呈现吗?

javascript - 首先显示 Div,然后在表单中第二次单击按钮时提交

javascript - React.js 通过数组创建循环

javascript - 如何在 reactjs 中使用单个 ListItem 映射路由?

javascript - react native 类型错误 : Cannot read property 'createClient' of undefined