当使用钩子和反应选择时,我得到了这个错误:TypeError:Object(...)不是一个函数

时间:2020-03-02 14:00:51

标签: reactjs redux react-hooks redux-form react-select

我正在使用react-select并将其从组件传递到钩子。我希望它会更舒适。

将待办事项添加到associatedTodos时,出现此错误:

TypeError:Object(...)不是函数

我正在使用react-select,代替componentDidMount,我正在使用useEffect,并使用useDispatch进行操作,对于onChange中的选定值和setValue,我正在使用useState。

这是我的代码:

import React, {
    useState,
    useEffect,
    useDispatch
} from 'react';

import Select from 'react-select';
import "./styles.css";

import {
    searchTodos
} from '../../actions/ServiceActions';



const SelectInput = ({
    label,
    input,
    width,
    placeholder,
    meta: {
        touched,
        error
    },
    ...rest
}) => {
    const [todo, setTodo] = useState();

    const dispatch = useDispatch();

    useEffect(() => {
        dispatch(this.props.searchTodos());
    }, [])
    return ( <
        div className = 'form-container' >
        <
        label forname = {
            input.name
        } > {
            label
        } < /label> <br / >
        <
        Select {
            ...rest
        }
        placeholder = {
            !input.value ? 'please, select a todo' : input.value
        }
        selected = {
            input.value ? input.value : null
        }
        onBlur = {
            input.onBlur
        }
        value = {
            tarea
        }
        onChange = {
            setTodo
        }
        options = {
            dispatch(this.props.searchTodos())
        }
        className = 'form-control' /
        >
        <
        div className = 'text-danger'
        style = {
            {
                marginBottom: '20px'
            }
        } > {
            touched && error
        } <
        /div> <
        /div>
    );
};

export default SelectInput;

我想知道替代连接的方法是什么。 Connect方法仅用于类组件。哪种等效的连接方法可用于功能组件使用React挂钩从reducer todo获取所有待办事项。

您可以通过Using react-select I've got next issue: Cannot read property 'value' of undefined

进行指导

解释如何使用todoList作为reducer和hooks,使用钩子选择确定的todo并更改值。

我想要的是通过todoList reducer搜索确定的待办事项,选择确定的待办事项,在下拉列表中更改todo值(选择组件),然后使用钩子通过操作“ searchTodos”获取todoList。

0 个答案:

没有答案