2016-11-25 12 views
0

Ich habe ein Projekt in react-native, in meinem Projekt habe ich Listenansicht und modal, Listenansicht brauchen Konstruktor, und Modal brauchen Konstruktor, wenn ich versuchte, zwei Konstruktoren zu verwenden, habe ich Fehler, wie Ich kann diesen Fall lösen? bitte helfen !!Verwenden Sie zwei Konstruktoren in react-native

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

Es gibt keinen Polymorphismus dieser Art in ES6, und die Instanz wird den 'props' Wert in den Argumenten immer erhalten, auch wenn Sie nicht schreiben jede Parameter in der Funktionsdeklaration, daher können Sie nicht zwei Konstruktoren haben. Sie sagen, dass die Ansicht und das Modal einen Konstruktor benötigen. Was bedeutet das genau? – martinarroyo

+0

Dies ist mein Code überprüfen Sie es, wenn ich den Code ausführen, habe ich Fehler, "Duplikate verwenden Konstruktor" !! Wie man es löst ? –

+0

Sie können nicht zwei Konstruktoren haben. Verschmelze die Logik von beiden zu einem und es sollte funktionieren. – martinarroyo

Antwort

0

Verwenden nur ein Konstruktor:

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

es funktioniert nicht –