React-Native Picker не может инициализировать значение по умолчанию - PullRequest
1 голос
/ 12 февраля 2020

У меня есть средство выбора, и я должен показать свое значение по умолчанию при инициализации средства выбора, но selectedValue не срабатывает при первом вызове.

Это мой модуль выбора:

<Picker
    selectedValue={this.props.expense.currency}
    onValueChange={(val) => {
        let expenses = [...this.props.expense];
        expenses[index].currency = val;
        this.props.setExpense(expenses);
    }}>

    <Picker.Item label='Select Money' value='default'/>
    {
        loginType.currency.map((i) => {
            return (<Picker.Item label={i.TYPE} value={i}/>)
        })
    }
</Picker>

this.props.expense.currency возвращает:

{
    CODE: '2',
    TYPE: 'EUR'
}

По умолчанию 'EUR'. Но это приходит с 'Select Money'.

Это был день, и я не мог найти никакого решения. Я исследовал defaultValue, но на страницах Github ничего подобного нет. Любое решение или обходной путь?

1 Ответ

1 голос
/ 12 февраля 2020

Вы должны использовать что-то, что сопоставимо для реквизита предмета выбора.

Я предполагаю, что здесь происходит то, что сравнение объектов между this.props.expense.currency и value пропеллером на каждом Picker.Item терпит неудачу, поэтому это значение по умолчанию для первого. Попробуйте сопоставить значение с кодом, а не с полным объектом, например:

<Picker
    selectedValue={this.props.expense.currency.CODE}
    onValueChange={(val) => {
        let expenses = [...this.props.expense];
        let newVal = loginType.currency.find(item => item.CODE === val)
        expenses[index].currency = newVal;
        this.props.setExpense(expenses);
    }}>

    <Picker.Item label='Select Money' value='default'/>
    {
        loginType.currency.map((i) => {
            return (<Picker.Item label={i.TYPE} value={i.CODE}/>)
        })
    }
</Picker>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...