如何从多个TextInput取回文本?

时间:2019-03-30 22:29:17

标签: react-native

我正在与朋友一起开发应用程序,我们陷入了一个问题... 我们想问一些球员的名字。 我们单击一个按钮以添加一些TextInput。 (这里一切正常) 但是现在,我们想找回我们输入的文字。

我试图将它们保存为状态,但是我知道如何用一个文本而不是很多文本来做到这一点。

 addTextInput = (key) => {
    let textInput = this.state.textInput;
    if (textInput.length < 10) {
        *textInput.push(<TextInput style={{ height: 40, borderColor: 'black', borderWidth: 2 }} key={key}
            onChangeText={(text) => this.setState({ nomJoueur: text })}
        />);*
        Data.addNombreJoueur();
        console.log(nombreJoueurs);
    }
    this.setState({ textInput })
}

我试图这样做:

addTextInput = (key) => {
    let textInput = this.state.textInput;
    let nomJoueur = this.state.nomJoueur;
    if (textInput.length < 10) {
        textInput.push(<TextInput style={{ height: 40, borderColor: 'black', borderWidth: 2 }} key={key}
            onChangeText={
                (text) => nomJoueur.push(text)
            }
            nomParticipants2={this.state.nomJoueur}
        />);
        Data.addNombreJoueur();
        console.log(nombreJoueurs);
    }
    this.setState({ textInput })
}

但是,我得到了

"nomParticipants2": Array [
[23:17:16]           "z",
[23:17:16]           "ze",
[23:17:16]           "zed",
[23:17:16]           "zedz",
[23:17:16]           "zedzx",
[23:17:16]           "zedzxz",
[23:17:16]           "zedzxzx",
[23:17:16]           "r",
[23:17:16]           "rz",
[23:17:16]           "rze",
[23:17:16]           "rzez",
[23:17:16]           "rzezd",
[23:17:16]           "e",
[23:17:16]           "ez",
[23:17:16]           "ezc",
[23:17:16]           "ezcz",
[23:17:16]           "ezczc",
[23:17:16]         ],

我真的需要您的帮助! 谢谢你们

编辑:感谢内德拉根的帮助

要解决我的问题,我有n种不同的功能来添加inputText:

addTextInput = (key) => {
    console.log('Bonjour');
    let textInput = this.state.textInput;
    let nomJoueur0 = this.state.nomJoueur0;
    let nomJoueur1 = this.state.nomJoueur1;
    let nomJoueur2 = this.state.nomJoueur2;
    let nomJoueur3 = this.state.nomJoueur3;
    ...

    if (textInput.length == 0) {
        textInput.push(<TextInput style={{ height: 40, borderColor: 'black', borderWidth: 2 }} key={key}
            onChangeText={(text) => this.setState({ nomJoueur0: text })
            }/>);
        Data.addNombreJoueur();
        console.log(nombreJoueurs);
    }
    else if (textInput.length == 1) {
        textInput.push(<TextInput style={{ height: 40, borderColor: 'black', borderWidth: 2 }} key={key}
            onChangeText={(text) => this.setState({ nomJoueur1: text })
            }/>);
        Data.addNombreJoueur();
        console.log(nombreJoueurs);
    }
...

1 个答案:

答案 0 :(得分:0)

如果您只有几个TextInput,并且不介意创建额外的函数,则始终可以为每个组件创建一个单独的函数。较干净的解决方案是将当前的onChangeText更改为onChangeText = {value => this.setState({value})},其中value是状态中变量的名称。因此,使用上面的代码段,如果您将值更改为username,那么this.state.username将会被更新。