【问题标题】:How to allow text input in list item using react native?如何使用本机反应允许在列表项中输入文本?
【发布时间】:2019-06-21 15:05:02
【问题描述】:

这个问题与 React Native 相关,特别是文本输入组件。我想创建一个应用程序,允许用户从他们的联系人中选择一些人,并根据他们的选择,创建一个列表,每个人旁边都有文本输入。从那里,他们能够进行文本输入,并使用 onChangeText 函数更改特定键的状态。

以下是我尝试过的代码。我试图更改 prop 中的百分比状态,我认为这是不正确的,因为所有元素都将共享相同的文本输入。

通过这样做,每当我在一个字段中输入文本时,文本输入将随后删除。

constructor(props) {
    super(props);
    this.state = {
        selected2: undefined,
        description: "",
        amount: "",
        notes: "",
        percent: {},
        selectedContacts:
            this.props.navigation.state.params.selectedContacts,
    };
}

const SelectedList = (props) => {

    const list = ({ allContacts }) => {
        if (allContacts) {
            return allContacts.map((item) => {
                return (
                    <ListItem key={item.id}>
                        <Body>
                            <Text>{`${item.first_name}`}</Text>
                            <Text note>{`${item.phone_number}`}</Text>
                        </Body>
                        <Right>
                            <Item>
                                <Input
                                    placeholder="0"
                                    maxLength={3}
                                    onChangeText={(percent) => {
                                        this.setState({percent});
                                    }}
                                />
                                <Text>%</Text>
                            </Item>
                        </Right>
                    </ListItem>
                )
            })
        }
    }

    <SelectedList
        allContacts={this.state.selectedContacts}
    />

我希望实现的是,在选择联系人数量并传输数组数据后,我希望将数组打印出来,并且每个列表项的文本输入相互独立。

欢迎任何反馈和建议,非常感谢您花时间阅读我的查询并帮助我解决问题。谢谢!

【问题讨论】:

    标签: react-native textinput listitem


    【解决方案1】:

    我认为这与您的逻辑有关..这样的事情应该可行。将“百分比”类型设置为数组并在 onChangeText 中更改特定项目

    this.state = {
     ...
     percent: [],
     ...
    }
    ...
    
    return allContacts.map((item,index) => {
    ...
    
    onChangeText={(someText) => {
      var {percent} = this.state;
      percent[index] = someText;
      this.setState({percent});
    }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多