показывать элемент выбора, когда значение истинно - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть компонент, который использует Picker из 'react-native' и в реквизитах я получаю значение bool showDefaultPickerItem, чтобы показать или скрыть Picker.Item.Проблема в том, что этот способ не работает, я получаю сообщение об ошибке

null не является объектом, оценивающим дочерние элементы

. Конечно, list имеет длинутерка чем 1.

function PickerComponent(props){
  const { selectedValue, onValueChange, list, label, valuekey, showDefaultPickerItem } = props;
  return (
    <Picker
      selectedValue={selectedValue}
      onValueChange={(value) => onValueChange(value)}
    >
      {showDefaultPickerItem &&
        <Picker.Item label={"Select"} value={undefined} color ={gray}/>    
      }
      {list.map(l => {
          return <Picker.Item key={l[valuekey]} label={l[label]} value={l[valuekey]} />
        })
      }
    </Picker>              
  )
}

1 Ответ

2 голосов
/ 24 сентября 2019

Я думаю, что этот код полезен для вас.

function make_list(list, showDefaultPickerItem, valuekey, label) {
  let listMap = list.map(l => <Picker.Item key={l[valuekey]} label={l[label]} value={l[valuekey]} />);
  if (showDefaultPickerItem) {
    listMap.unshift(<Picker.Item key="_default" label={"Select"} value={undefined} color={'gray'} />);
  }
  return listMap;
}
function PickerComponent(props){
  const { selectedValue, onValueChange, list, label, valuekey, showDefaultPickerItem } = props;
  return (
    <Picker
      selectedValue={selectedValue}
      onValueChange={(value) => onValueChange(value)}
    >
      {make_list(list, showDefaultPickerItem, valuekey, label)}
    </Picker>              
  )
}
...