gpt4 book ai didi

checkbox - react native ListView

转载 作者:行者123 更新时间:2023-12-02 19:48:41 25 4
gpt4 key购买 nike

我正在尝试在 native react 中创建一个 ListView ,每一行都有一个复选框和一个正文文本。为此,我使用 nativebase 包。 http://nativebase.io/docs/v2.0.0/components#checkbox

我遇到一些问题,当我单击复选框时,复选框不会将状态更改为 false。单击复选框时如何从正文文本中获取值?

import React, { Component } from 'react';
import { Container, Content, List, Body, ListItem, Text, CheckBox } from 'native-base';

class ListExample extends Component {
state = {
pressed: true,
value: ""
};

onCheckBoxPress() {
console.log(this);
this.setState({ pressed: false});
this.setState({ value: BODYVALUE});
}

render() {
var items = [ "test1", "test2", "test3", "test4", "test5", "test6" ];
return (
<Container>
<Content>
<List dataArray={items} renderRow={(data) =>
<ListItem>
<CheckBox onPress={this.onCheckBoxPress.bind(this)} checked={this.state.pressed} />
<Body>
<Text>{data}</Text>
</Body>
</ListItem>
} />
</Content>
</Container>
);
}
}

export default ListExample;

最佳答案

我遇到了类似的问题,在我的例子中,我需要保存所选行的 ID,这是适用的解决方案。

import React, { Component } from 'react';
import {
StyleSheet,
View,
ListView
} from 'react-native';
import { typography } from 'react-native-material-design-styles';
import { Container, Content, Item, List, CheckBox, Body, ListItem, Text } from 'native-base';
import ItemLot from './item.js';

export default class LotsListDevolutionClient extends Component {
state = {
lots: [
{
id: 1,
serie: 'sorteo',
almacen: 'principal',
inicio: 1,
fin: 50
},
{
id: 2,
serie: 'sorteo',
almacen: 'principal',
inicio: 51,
fin: 100
}
],
selectedLots: [],
token: ''
};

onCheckBoxPress(id) {
let tmp = this.state.selectedLots;

if ( tmp.includes( id ) ) {
tmp.splice( tmp.indexOf(id), 1 );
} else {
tmp.push( id );
}

this.setState({
selectedLots: tmp
});
console.warn('selected: ', this.state.selectedLots)
}

_renderItem(item){
return (
<View style={styles.row}>
<CheckBox checked={item.check} onPress={() => this.onCheck(item)} />
<Item lot={item}/>
</View>
)
}

render() {
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
return (
<Container>
<Content style={styles.content}>
<Text style={[typographyStyle.paperFontTitle, {alignSelf: 'center'}]}>Seleccione los lotes</Text>
<Item>
<ListView
enableEmptySections={true}
dataSource={ds.cloneWithRows(this.state.lots)}
renderRow={(item) =>
<ListItem style={styles.listItem}>
<CheckBox
checked={this.state.selectedLots.includes(item.id) ? true : false}
onPress={()=>this.onCheckBoxPress(item.id)}
/>
<ItemLot lot={item}/>
</ListItem>
}
/>
</Item>
</Content>
</Container>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white'
},
row:{
flexDirection: 'row',
justifyContent: 'flex-start'
},
listItem: {
backgroundColor: '#DFDFDF',
elevation: 5,
margin: 4
},
content: {
flexDirection: 'column'
}
});

const typographyStyle = StyleSheet.create(typography);

关于checkbox - react native ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com