Guest User

Untitled

a guest
Feb 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. var React = require('react-native'),
  2.  
  3. Bus = require('../Bus'),
  4. styles = require('../Styles'),
  5. CampaignsStore = require('../stores/Campaigns'),
  6. CampaignItem = require('./CampaignItem'),
  7.  
  8. {
  9. Component,
  10. Text,
  11. TextInput,
  12. ListView,
  13. View,
  14. NavigatorIOS,
  15. ActivityIndicatorIOS
  16. } = React
  17.  
  18.  
  19. class CampaignList extends Component {
  20. constructor(props) {
  21. super(props)
  22.  
  23. this.state = {
  24. dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
  25. }
  26. }
  27.  
  28. componentDidMount() {
  29. this.addListeners()
  30. Bus.emit('campaigns:search', '')
  31. }
  32.  
  33. componentWillUnmount() {
  34. this.removeListeners()
  35. }
  36.  
  37. render() {
  38. console.log('render')
  39. return (
  40. <View style={styles.container}>
  41. <TextInput
  42. style={styles.searchInput}
  43. placeholder='Campaign Name'
  44. value={this.state.campaignName}
  45. onChange={this.campaignSearchChanged.bind(this)}/>
  46. <ListView
  47. dataSource = {this.state.dataSource}
  48. renderRow = {this.renderRow.bind(this)}/>
  49. </View>
  50. )
  51. }
  52.  
  53. renderRow(campaign) {
  54. console.log('renderRow')
  55. return <CampaignItem campaign={campaign}/>
  56. }
  57.  
  58. addListeners() {
  59. Bus.on({
  60. 'campaigns:updated': this.campaignsUpdated.bind(this)
  61. })
  62. }
  63.  
  64. removeListeners() {
  65. Bus.off({
  66. 'campaigns:updated': this.campaignsUpdated.bind(this)
  67. })
  68. }
  69.  
  70. campaignsUpdated(event) {
  71. var campaigns = event.data
  72. this.setState({
  73. dataSource: this.state.dataSource.cloneWithRows(campaigns)
  74. })
  75. }
  76.  
  77. campaignSearchChanged(event) {
  78. var campaignName = event.nativeEvent.text
  79. Bus.emit('campaigns:search', campaignName)
  80. }
  81. }
  82.  
  83. module.exports = CampaignList
  84.  
  85. campaignsUpdated(event) {
  86. var campaigns = event.data.slice(); // <-- clone the array
  87. this.setState({
  88. dataSource: this.state.dataSource.cloneWithRows(campaigns)
  89. })
  90. }
Add Comment
Please, Sign In to add comment