не может отправить действие внутри ловушек реакции useEffect - PullRequest
0 голосов
/ 10 октября 2019

У меня есть проблема при отправке действия внутри useEffect в функциональном компоненте

в компоненте класса это выглядит так

import getAllItem from './actions/item'

export class Home extends Component {

  state = {   menus: []  }

  componentDidMount() {
    this.props.dispatch(getAllItem())
    this.setState({ menus: this.props.menu })
   })
  }

...
...

const mapStateToProps = state => {
  return { menu: state.reItem.itemList}
}
export default connect(mapStateToProps)(Home);

в консоли возвращает массив моих меню

Я хочу преобразовать его в функциональный компонент, и я попытался

import getAllItem from './actions/item'

export default function Home() {
  const dispatch = useDispatch();
  const menuState = useSelector(state => state.reItem.itemList)
  const [menus, setMenus] = useState();

   useEffect(() => {
     dispatch(getAllItem())
     setMenus(menuState);
   }, [])
...
...

Я ожидал, что мой функциональный компонент будет иметь тот же результат, что и компонент класса, но в консоли он возвращает "TypeError: (0, _item.default) не является функцией "

мой код действия прост

export const getAllItem = () => {
    return {
        type: 'GET_ITEM',
        payload: Axios.get(`${URL}/item/`)
    }
}

и редуктор

const initialState = {
    itemList: []
}

const item = (state = initialState, action) => {
    switch (action.type) {
        case 'GET_ITEM':
            return {
                ...state,
                itemList: action.payload.data.result
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...