React Native onClick 没有触发

React Native onClick is not firing

使用 NativeBase 为 Android 开发 React Native 应用程序时,我遇到了一个问题。尽管使用了箭头函数,但我的 Button 组件中的 onClick() 事件没有触发,我不明白为什么。

代码如下:

import React from 'react';
import {View, Text} from 'react-native';
import {withNavigation} from 'react-navigation';
import {Button, Header, Icon, Item, Input} from 'native-base';

let text = '';

class SearchBar extends React.Component {
  onButtonClick = () => {
    text = 'yes';
  };

  render() {
    return (
      <View>
        <Header searchBar rounded>
          <Item>
            <Icon name="ios-search" />
            <Input placeholder="Search" />
          </Item>
        </Header>
        <Button onClick={() => this.onButtonClick()}>
          <Text>Search</Text>
        </Button>
        <Text>Is the button clicked? {text}</Text>
      </View>
    );
  }
}

export default withNavigation(SearchBar);

你能帮帮我吗?在所有其他组件中,我完全按照上面的示例实现了事件功能,并且这些功能正在运行。上面那个有什么问题?

我还尝试了 React-Native 的 Button 而不是 NativeBase - 同样的问题。

在react native中被称为"onPress" 参考:https://facebook.github.io/react-native/docs/0.58/button

React 组件仅在状态更改时更新。 在这里,你的文本变量改变了,但你的反应组件不知道它必须更新。

您应该使用 onPress 而不是 onClick 并执行此操作以触发重新渲染(更新状态):

import React from 'react';
import {View, Text} from 'react-native';
import {withNavigation} from 'react-navigation';
import {Button, Header, Icon, Item, Input} from 'native-base';


class SearchBar extends React.Component {
  constructor(props) {
    super(props);
    this.state = {text: ''};
  }

  onButtonClick = () => {
    this.setState({text: 'yes'});
  };

  render() {
    return (
      <View>
        <Header searchBar rounded>
          <Item>
            <Icon name="ios-search" />
            <Input placeholder="Search" />
          </Item>
        </Header>
        <Button onPress={() => this.onButtonClick()}>
          <Text>Search</Text>
        </Button>
        <Text>Is the button clicked? {this.state.text}</Text>
      </View>
    );
  }
}

export default withNavigation(SearchBar);