您可以使用組件分離輕鬆完成此操作。請看看這裏:
export default class ContactList extends Component {
static propTypes = {
contacts: React.PropTypes.array,
}
static defaultProps = {
contacts: [],
}
constructor(){
super();
this._renderRow = this._renderRow.bind(this);
}
_renderRow(rowData,sectionID,rowID) {
return <Contact info={ rowData } />;
}
render() {
return (
<ListView
dataSource={ this.props.contacts }
renderRow={ this._renderRow }
/>
);
}
}
export class ContactList extends Component {
static propTypes = {
info: React.PropTypes.object.isRequired,
}
constructor(){
super();
this.goRideDetails = this.goRideDetails.bind(this);
this.setChecked = this.setChecked.bind(this);
}
goRideDetails() {
//your logic here
}
setChecked() {
this.props.info.checked = !this.props.info.checked; //will be much better to do it with redux and action creators
}
render() {
return (
<TouchableHighlight onPress={ this.goRideDetails }>
<Text style={ styles.rideHeader }>{this.props.info.name} </Text>
<CheckBox checked={ this.props.info.checked } onCheckBoxPressed={ this.setChecked } />
</TouchableHighlight>
);
}
}
之後,你可以簡單地調用:
<ContactList contacts={this.state.dataSource} />
在JSX瞧
。
重要說明:請勿在jsx代碼塊中使用數組函數。
重要說明2:嘗試開始使用redux或flux來存儲應用程序的狀態。它將提供更好的代碼設計。
希望,這將有所幫助。
您是否希望每一行都有自己的複選框狀態,以便可以單獨檢查/取消選中每個行框? 「......但不工作」是什麼意思......它在做什麼? – rmevans9
感謝您的回覆,是的,我想要的,正是你所說的。複選框狀態不更新,並且當我按下複選框時,複選框未被選中/取消選中。 – neelima