cari

Rumah  >  Soal Jawab  >  teks badan

Fungsi penghantaran tidak mempunyai kesan selepas menekan butang

Ini ialah fungsi tindakan yang digunakan dengan redax (ia berfungsi dengan sempurna sejak saya menggunakannya)

export const fetchCategory = () => {
  return async (dispatch) => {
    try {
      dispatch(settingsSlice.actions.settingsFetching());
      const response = await request("/category/getAll", "POST", {});
      dispatch(settingsSlice.actions.settingsFetchingSuccess(response));
    } catch (e) {
      dispatch(settingsSlice.actions.settingsFetchingError(e));
    }
  };
};

Apabila butang ditekan, saya perlu membuat permintaan kepada pelayan dan mengemas kini status

Ini ialah fungsi yang dilaksanakan apabila anda mengklik butang:

const buttonHandler = async () => {
    await request("/category/create", "POST", {
      newCategory: {
        label: form.categoryLabel,
        limit: form.categoryLimit,
      },
    });
    setForm(initialState);
    fetchCategory();
  };

Saya telah menyemak, borang telah dihantar ke bahagian belakang dan semuanya baik kecuali "fetchCategory"

Saya telah mencuba menggunakan useEffect untuk menyelesaikan masalah ini

useEffect(() => {
    fetchCategory();
  }, [Button , buttonHandler]);

Saya cuba memasang kebergantungan yang berbeza tetapi tiada hasil. bagaimana untuk menyelesaikan masalah ini?

P粉410239819P粉410239819482 hari yang lalu476

membalas semua(1)saya akan balas

  • P粉704196697

    P粉7041966972023-09-17 14:40:47

    Anda perlukan dispatch tindakan ini!

    Anda fetchCategory 函数是一个 "thunk action creator"。调用 fetchCategory() 会创建一个 thunk 动作,但不会对其执行任何操作。你需要调用 dispatch(fetchCategory()) untuk melakukan tindakan ini.

    const buttonHandler = async () => {
        await request("/category/create", "POST", {
          newCategory: {
            label: form.categoryLabel,
            limit: form.categoryLimit,
          },
        });
        setForm(initialState);
    --> dispatch(fetchCategory()); <--
    };

    balas
    0
  • Batalbalas