Сейчас я пытаюсь использовать useReducer, чтобы создать новый способ управления состоянием и функцией, но теперь обнаружил, что проблема заключается в том, что «хуки можно вызывать только внутри тела компонента функции». Есть ли способ решить эту проблему??
// App Component
import React from "react";
import { product, productDis } from "./ProductReducer";
//{product} is state, {productDis} is dispatch
import { total } from "./TotalReducer";
//{total} is state and i dont need {totalDis}
const App = () => {
return (
<div>
<button onClick={()=>productDis({type:'add',payload:'pen'})}>add</button>
{product} {total}
</div>
);
};
export default App;
// ProductReducer Component
import React, { useReducer } from 'react';
import {totalDis} from './TotalReducer'
//{totalDis} is dispatch and i dont need {total}
export const [product, productDis] = useReducer((state, action) => {
switch (action.type) {
case "add": {
const product_0 = 'pencil'
const product_1 = `${action.payload} and ${product_0}`
totalDis({
type:'total_add',
payload:'250'
})
return product_1;
}
default:
return state;
}
}, []);
// TotalReducer Component
import React, { useReducer } from 'react';
export const [total, totalDis] = useReducer((total, action) => {
switch (action.type) {
case "total_add": {
const vat = action.payload*1.15
return vat;
}
default:
return total;
}
}, 0)
когда я нажимаю кнопку на дисплее должно быть показано ... "перо и карандаш 287,5"
но это показывает "Крючки могут быть тольковызывается внутри тела компонента функции "
Есть ли способ решить эту проблему?или я должен вернуться к природе?