2016-11-25 6 views
0

私はプロジェクトに反応ネイティブを持っています。リストビューとモーダルが必要です。リストビューにコンストラクタが必要です。2つのコンストラクタを使用しようとすると、モーダルが必要です。私はこのケースを解決することができますか?助けてください !!2つのコンストラクタを反応ネイティブで使用する

import React, { Component } from 'react'; 
import { 
    StyleSheet, 
    ToolbarAndroid 
    ,AppRegistry, 
    View, 
    Text, 
    TouchableHighlight, 
    Modal, 
    TextInput, 
    ListView,ActionButton, 
    Image, 
    Alert 
} from 'react-native'; 
var DialogAndroid = require('react-native-dialogs'); 

export default class HygexListView extends Component { 

    constructor() { 
     super(...arguments); 
     this.state = { 
      visible: false 
     }; 
    } 
constructor(props){ 

    super(props); 
    var ds = new ListView.DataSource({ 
     rowHasChanged: (r1, r2) => r1 != r2 
    }); 
    this.state = { 
     ds:[{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"}], 
     dataSource:ds, 
    } 


    } 



    componentDidMount(){ 
    this.setState({ 
     dataSource:this.state.dataSource.cloneWithRows(this.state.ds), 
    }) 

    } 
    pressRow(rowData){ 

    var newDs = []; 
    newDs = this.state.ds; 
    newDs[0].Selection = newDs[0] == "CustomerName" ? "CustomerPhone" : ""; 
    this.setState({ 
     dataSource: this.state.dataSource.cloneWithRows(newDs) 
    }) 

    showModal =() => { 
     this.setState({ 
      visible: true 
     }); 
    }; 

    hideModal =() => { 
     this.setState({ 
      visible: false 
     }); 
    }; 

    } 

    renderRow(rowData){ 
    return (
     <TouchableHighlight 
     onPress={()=> this.showModal()} 
     underlayColor = '#ddd'> 
     <View style ={styles.row}> 
      <Text style={{fontSize:19}}>{rowData.CustomerName} {"\n"} {rowData.CustomerPhone} </Text> 
      <View style={{flex:1}}> 
      <Text style={styles.selectionText}>{rowData[rowData.Selection]}</Text> 
      </View> 
     </View> 
     </TouchableHighlight> 

    ) 
    } 
    render() { 
    return (
    <View style={styles.container}> 
    <View style={styles.toolbar}> 
    <TouchableHighlight > 
    <Image style={styles.imagestyle} 
    source={require('./ic_search.png')}/> 
    </TouchableHighlight> 
    <Text style={styles.toolbarTitle}>CUSTOMERS</Text> 
    <TouchableHighlight onPress={() => this.moveToAddNewCustomer()}> 
    <Image style={styles.imagestyle} 
    source={require('./ic_action_name.png')} /> 
    </TouchableHighlight> 

    </View> 



    <ListView 
     dataSource = {this.state.dataSource} 
     renderRow = {this.renderRow.bind(this)}> 
     </ListView> 
     <View style={styles.x}> 
        <TouchableHighlight style={styles.action1}> 
        <Text style={styles.actionText}>CUSTOMERS</Text> 
        </TouchableHighlight> 
        <TouchableHighlight style={styles.action1} 
        onPress={() => this.moveToOrderEntry()}> 
        <Text style={styles.actionText}>Order Entry</Text> 
        </TouchableHighlight> 

        <TouchableHighlight style={styles.action} 
        onPress={() => this.moveToMyOredre()}> 
        <Text style={styles.actionTex1}>My Order</Text> 
        </TouchableHighlight> 

         </View> 
          <Modal 
       visible={this.state.visible} 
      > 

<View style={styles.modalContainer}> 
<View style={styles.toolbar}> 
    <View> 
<Text style={styles.toolbarTitle}>X</Text> 
</View> 
<Text style={styles.toolbarTitle}>Details</Text> 
         </View> 
         <View style={styles.ButtonflexDirection}> 
    <Text >CUSTOMER Name</Text> 
    </View> 
    <View style={styles.ButtonflexDirection}> 
    <Text >Address</Text> 

    </View> 
    <View style={styles.ButtonflexDirection}> 
    <Text >Phone Number</Text> 
    </View> 
    <View style={styles.ButtonflexDirection}> 
    <Text >Interested Product</Text> 
    </View> 
    <View style={styles.ButtonflexDirection}> 
    <Text >Discount</Text> 
    </View> 
    <View > 
<TouchableHighlight style={styles.button} 
        onPress={() => this.moveToHygexListView()}> 
        <Text style={styles.buttonText}>   ADD ORDER</Text> 

        </TouchableHighlight> 
         </View> 
       </View> 
      </Modal> 

     </View> 
     ) 
    } 
     moveToMyOredre() { 
     this.props.navigator.push({ 
     id: 'MyOrder' 
     }) 
} 
    moveToOrderEntry() { 
     this.props.navigator.push({ 
     id: 'OrderEntry' 
     }) 
} 
     moveToAddNewCustomer() { 
     this.props.navigator.push({ 
     id: 'AddNewCustomer' 
     }) 
} 

} 
+0

そのES6で並べ替え、およびインスタンスのない多型はありませんが、常に何かを書いていない場合でも、引数で 'props'値を受け取りますしたがって、2つのコンストラクタを持つことはできません。あなたはビューとモーダルがコンストラクタを必要としていると言います。それはどういう意味ですか? – martinarroyo

+0

これは私のコードです。私はコードを実行するときにエラーが発生しました。 "duplicate use constructor" !!どのようにそれを解決するには? –

+0

コンストラクタを2つ持つことはできません。両方のロジックを1つに統合すればうまくいくはずです。 – martinarroyo

答えて

0

使用だけで1つのコンストラクタ:

constructor(props){ 
    super(props); 
    var ds = new ListView.DataSource({ 
    rowHasChanged: (r1, r2) => r1 != r2 
    }); 
    this.state = { 
    ds:[{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"},{CustomerName: "Customer Name", CustomerPhone: "+564659878964"}], 
    dataSource:ds, 
    visible: false, 
    } 


} 
+0

その機能していません –

関連する問題