更改复选框状态

时间:2017-03-25 17:05:47

标签: checkbox react-native

我正在尝试创建一个包含多行的ListView。每行都有一个复选框+文本。 这是我对ListView的实现:

class ListExample extends Component {

  constructor() {
      super();
      const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
      this.state = {
        dataSource: ds.cloneWithRows(["hey1", "hey2", "hey3", "hey4"]),
      };
    }

    render() {
      return (
        <ListView
          dataSource={this.state.dataSource}
          renderRow={(data) => <Row data={data} />}
        />
      );
    }
}
export default ListExample;

这是我执行的一行:

import React from 'react';
import { CheckBox } from 'native-base';
import { View, Text, StyleSheet} from 'react-native';

const Row = (props) => (
  <View style={styles.container}>
    <CheckBox onPress={props.onPress} checked={false} />
    <Text style={styles.text}>
      { props.data }
    </Text>
  </View>
);
export { Row };

现在我需要在复选框上创建行为。我的目标是当一个人点击复选框时,该框将状态更改为选中状态。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用Row组件的状态:

import React, { Component } from 'react';
import { CheckBox } from 'native-base';
import { View, Text, StyleSheet} from 'react-native';

class Row extends Component {
  constructor(props) {
    super(props);
    this.state = { checked: false };
  }

  render() {
    return (
      <View style={styles.container}>
        <CheckBox
          onPress={() => this.setState({
            checked: !this.state.checked
          })}
          checked={this.state.checked}
        />
        <Text style={styles.text}>
          { props.data }
        </Text>
      </View>
    );
  }
}

export default Row;