Reactjs TypeError:functionName不是函数(Redux-useDispatch)

Reactjs TypeError:functionName不是函数(Redux-useDispatch),reactjs,redux,Reactjs,Redux,我得到了TypeError:functionName不是一个函数,当我用useDispatch调用它时。初始状态作为空数组返回正常值。这是我的代码: 行动: export const getTopStories = () => async (dispatch) => { try { const { data } = await axios.get('http://news-site.com/api'); dispatch({ type: GE

我得到了
TypeError:functionName不是一个函数,当我用
useDispatch
调用它时。初始
状态
作为空数组返回正常值。这是我的代码:

行动:

export const getTopStories = () => async (dispatch) => {
  try {    
    const { data } = await axios.get('http://news-site.com/api');

    dispatch({
      type: GET_TOP_STORIES,
      payload: data,
    });
  } catch (err) {
     console.log(err)
  }
};
减速器:

const initialState = {
  topStories: [],
};

export default (state = initialState, action) => {    
  switch (action.type) {  
    case GET_TOP_STORIES:
      return { ...state, topStories: action.payload};

    default:
      return state;
  }
};
第页:


您正在尝试从reducer状态提取操作。如果你不这样做的话。要获取状态,可以像现在一样使用
useSelector
hook。但要使用该操作,您需要导入该函数并在已有的
调度中使用它

大概是这样的:

import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { getTopStories } from './action.js'; // Adjust the path

const TopStories = () => {
  const stories = useSelector((state) => state.stories);
  const { topStories } = stories;

  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(getTopStories());
  }, []);

您正在尝试从reducer状态提取操作。如果你不这样做的话。要获取状态,可以像现在一样使用
useSelector
hook。但要使用该操作,您需要导入该函数并在已有的
调度中使用它

大概是这样的:

import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { getTopStories } from './action.js'; // Adjust the path

const TopStories = () => {
  const stories = useSelector((state) => state.stories);
  const { topStories } = stories;

  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(getTopStories());
  }, []);

啊,是的,我忘了导入函数。非常感谢您的快速回复!:-)啊,是的,我忘了导入函数。非常感谢您的快速回复!:-)