You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将React Native类组件实现的下拉框代码改写为函数组件?

React Native 下拉框类组件转函数组件实现

转换采用 React 内置的 useState Hook 替代类组件的 state 管理,无需额外绑定 this 上下文,最终代码如下:

import React, { useState } from 'react';
import { View, AppRegistry } from 'react-native';
import Dropdown from 'react-native-modal-select-option';

const propsDropdown = {
  defaultValue: {value: 5, label: 'Kebumen'},
  options: [
    {value: 1, label: 'Bandung'},
    {value: 2, label: 'Surabaya'},
    {value: 3, label: 'Palembang'},
    {value: 4, label: 'Jakarta'},
  ],
  label: 'Your City',
  animationType: 'none',
};

// 若项目未使用TypeScript可直接删除此段类型定义
type State = {
  selectedOption: Object,
  isShowingOptions: boolean;
};

const DropdownDemo = () => {
  // 状态初始化与原类组件初始值完全一致
  const [selectedOption, setSelectedOption] = useState(
    propsDropdown.defaultValue || {value: 0, label: 'Pilih Kota'}
  );
  const [isShowingOptions, setIsShowingOptions] = useState(false);

  // 下拉框展开/收起回调
  const handleShow = (value: boolean): void => {
    setIsShowingOptions(value);
  };

  // 选项选中回调
  const handleSelect = (item: Object, isShow: boolean): void => {
    setIsShowingOptions(isShow);
    setSelectedOption(item);
  };

  return (
    <View style={{flex: 1, padding: 10, paddingTop: 50}}>
      <Dropdown 
        {...propsDropdown}
        onSelect={handleSelect}
        onShow={handleShow}
        isShowingOptions={isShowingOptions}
        selectedOption={selectedOption}
      />
    </View>
  );
};

export default DropdownDemo;
AppRegistry.registerComponent('SandboxRn', () => DropdownDemo);

内容的提问来源于stack exchange,提问作者Ryan Fonseka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:06:04