React-native - 如何创建无限选择器

Nel*_*lio 6 javascript picker react-native

我想创建一个无限/循环反应本机选择器,如下图所示。

在此输入图像描述

所以,我的问题是:当我滚动时,如何使选择器在到达最后一个项目后从第一个项目重新开始?

这是我的代码:

render() {
  const hourItems = [];
  for(var i = 0; i < 24; i++) {
    hourItems.push(
      <Picker.Item label={i.toString()} value={i} key={i} />
    );
  }

  return(
    <ScrollView style={styles.panel}>
      <Picker
        selectedValue={this.state.hour}
        onValueChange={(itemValue, itemIndex) => this.setState({ hour: itemValue })}
      >
        {hourItems}
      </Picker>
    </ScrollView>
  );
}
Run Code Online (Sandbox Code Playgroud)

小智 1

我终于找到了一种获得无限选择器的方法。(时间选择器)

我们可以使用这个库“React Native DateTimePicker” https://github.com/react-native-datetimepicker/datetimepicker

npm install @react-native-community/datetimepicker --save

import DateTimePicker from '@react-native-community/datetimepicker';

// iOS 示例

export const App = () => {
  const [date, setDate] = useState(new Date(1598051730000));
  const [mode, setMode] = useState('date');
  const [show, setShow] = useState(false);

  const onChange = (event, selectedDate) => {
    const currentDate = selectedDate;
    setShow(false);
    setDate(currentDate);
  };

  const showMode = (currentMode) => {
    setShow(true);
    setMode(currentMode);
  };

  const showDatepicker = () => {
    showMode('date');
  };

  const showTimepicker = () => {
    showMode('time');
  };

  return (
    <SafeAreaView>
      <Button onPress={showDatepicker} title="Show date picker!" />
      <Button onPress={showTimepicker} title="Show time picker!" />
      <Text>selected: {date.toLocaleString()}</Text>
      {show && (
        <DateTimePicker
          testID="dateTimePicker"
          value={date}
          mode={mode}
          is24Hour={true}
          onChange={onChange}
        />
      )}
    </SafeAreaView>
  );
};
Run Code Online (Sandbox Code Playgroud)