Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var React = require('react-native'),
- Bus = require('../Bus'),
- styles = require('../Styles'),
- CampaignsStore = require('../stores/Campaigns'),
- CampaignItem = require('./CampaignItem'),
- {
- Component,
- Text,
- TextInput,
- ListView,
- View,
- NavigatorIOS,
- ActivityIndicatorIOS
- } = React
- class CampaignList extends Component {
- constructor(props) {
- super(props)
- this.state = {
- dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
- }
- }
- componentDidMount() {
- this.addListeners()
- Bus.emit('campaigns:search', '')
- }
- componentWillUnmount() {
- this.removeListeners()
- }
- render() {
- console.log('render')
- return (
- <View style={styles.container}>
- <TextInput
- style={styles.searchInput}
- placeholder='Campaign Name'
- value={this.state.campaignName}
- onChange={this.campaignSearchChanged.bind(this)}/>
- <ListView
- dataSource = {this.state.dataSource}
- renderRow = {this.renderRow.bind(this)}/>
- </View>
- )
- }
- renderRow(campaign) {
- console.log('renderRow')
- return <CampaignItem campaign={campaign}/>
- }
- addListeners() {
- Bus.on({
- 'campaigns:updated': this.campaignsUpdated.bind(this)
- })
- }
- removeListeners() {
- Bus.off({
- 'campaigns:updated': this.campaignsUpdated.bind(this)
- })
- }
- campaignsUpdated(event) {
- var campaigns = event.data
- this.setState({
- dataSource: this.state.dataSource.cloneWithRows(campaigns)
- })
- }
- campaignSearchChanged(event) {
- var campaignName = event.nativeEvent.text
- Bus.emit('campaigns:search', campaignName)
- }
- }
- module.exports = CampaignList
- campaignsUpdated(event) {
- var campaigns = event.data.slice(); // <-- clone the array
- this.setState({
- dataSource: this.state.dataSource.cloneWithRows(campaigns)
- })
- }
Add Comment
Please, Sign In to add comment