2017-08-10 66 views
0

我想建立一個超級簡單的聊天。 要做到這一點,有一個TextInput和一個TouchableOpacity發送消息,並清除Textinput。使用TouchableOpacity清除Textinput而不關閉鍵盤?

問題:當我發送消息時,Textinput被清除,但是當再次開始寫入時,舊文本再次被複制到Textinput(+新字符)中。 但是,如果鍵盤被髮送後清除一切工作 完全罰款。

有沒有什麼辦法用TouchableOpacity完全清除TextInput?

下面是我自己的代碼和一些嘗試,但沒有一個人工作。 由於提前,

Maffinius

 <View style={{flexDirection: 'row'}}> 
 
     <TextInput 
 
     placeholder="Schreibe eine Nachricht" 
 
     onChangeText={(text) => this.setState({newMsg : text})} 
 
     style={{width: 300}} 
 
     ref={'ref1'} 
 
     /> 
 
     <TouchableOpacity 
 
     onPress={this.sendMessage} 
 
     > 
 
     <Text> --> </Text> 
 
     </TouchableOpacity> 
 
     </View> 
 
    

sendMessage =() => { 
 
    this.state.MsgData.push({msg: this.state.newMsg, id: this.props.global.userId, timestamp: 8888}); 
 
    this.refs['ref1'].clear(); 
 
    this.setState({newMsg: ""}); 
 
    //this.refs['ref1'].setNativeProps({text: ''}) 
 
    //Keyboard.dismiss(); 
 

 
}

  1. 列表項

回答

0

使用defaultValue道具設置狀態的值(https://facebook.github.io/react-native/docs/textinput.html#defaultvalue

<TextInput 
    placeholder="Schreibe eine Nachricht" 
    onChangeText={(text) => this.setState({newMsg : text})} 
    style={{width: 300}} 
    ref={(input) => this.ref1 = input} 
    defaultValue={this.state.newMsg} 
/> 

全面實施參見下面的例子:https://snack.expo.io/SkuH8hKPb

+1

應該不是隻是價值? – EnriqueDev

+0

首先是快速響應的thx: 代碼示例幾乎可以正常工作,但是您必須在消息文本後面添加一個空格(否則當我再次開始寫入時,最後一個字或字符仍然在textinput中複製)。有沒有什麼辦法解決這一問題? (手動添加一個空白空間並不能正常工作)。 – Maffinius