React Native — преобразование компонента класса несколькими способами в функциональный компонент

#javascript #react-native #multi-select

#javascript #react-native #множественный выбор

Вопрос:

Я новичок в использовании перехватчиков React, и мне нужно преобразовать мой Class Components код в Functional Hooks . У меня есть Class Components логика ниже, которая хорошо работает. Однако приведенный выше код вызывает у меня проблемы. Я пытаюсь создать список с несколькими вариантами выбора. Кто-нибудь, пожалуйста, может помочь с исправлением этого кода.

     const { data, status } = useQuery('stores', fetchStores)
    const [isSelected, setIsSelected] = useState(false)

    const storeList = data

    useEffect(() => {

        let array = storeList.map((item, index) => {
            isSelected = false
            return { ...item }
        })

        setIsSelected({ ...isSelected, array: { ...storeList.array } })

        selectHandler()

    }, [])


    const selectHandler = (ind) => {

        let array = storeList.map((item, index) => {
            if (ind == index) {
                item.isSelected = !item.isSelected
            }
            return { ...item }
        })
        setIsSelected({ ...isSelected, array: { ...storeList.array } })
    }
  

Та же логика с ComponentDidMount работает отлично

 async componentDidMount() {

        let array = this.state.storeList.map((item, index) => {
            this.isSelected = false
            return { ...item }
        })
        this.setState({ storeList: array })
    }

    selectionHandler = (ind) => {
        const { storeList } = this.state
        let array = storeList.map((item, index) => {
            if (ind == index) {
                item.isSelected = !item.isSelected
            }
            return { ...item }
        })
        this.setState({ storeList: array })
    }
  

Комментарии:

1. Какую ошибку вы получаете?

2. Спасибо @roshnet, я получаю список хранилищ undefined, когда я регистрирую его в консоли, и эту ошибку… TypeError: undefined is not an object (evaluating 'storeList'.map)

3. @roshnet и array также не определено, когда я устанавливаю его в SetIsSelected