import { Card, CardBody, Input, Tab, Tabs } from '@nextui-org/react' import { useEffect, useReducer } from 'react' const reducer = (prevState, nextState) => { return { ...prevState, ...nextState } } const defaultData = { commonData: 'common', tabs: [ { id: 1, name: 'tab1', range: 10, maker: 'maker1', law: 'law1', basis: 'basis1', }, { id: 2, name: 'tab2', range: 20, maker: 'maker2', law: 'law2', basis: 'basis2', }, { id: 3, name: 'tab3', range: 30, maker: 'maker3', law: 'law3', basis: 'basis3', }, { id: 4, name: 'tab4', range: 40, maker: 'maker4', law: 'law4', basis: 'basis4', }, ], } export default function SampleReducer() { const [sampleState, setSampleState] = useReducer(reducer, defaultData) const handleChangeTabsData = (newTab) => { const newTabs = sampleState.tabs.map((t) => { if (t.id === newTab.id) { return newTab } else { return t } }) setSampleState({ tabs: newTabs }) } useEffect(() => { console.log('🚀 ~ SampleReducer ~ sampleState:', sampleState) }, [sampleState]) return ( <>
공통: {sampleState.commonData}
{sampleState.tabs.map((s) => (
{ handleChangeTabsData({ ...s, range: e.target.value }) }} /> { handleChangeTabsData({ ...s, maker: e.target.value }) }} /> { handleChangeTabsData({ ...s, law: e.target.value }) }} /> { handleChangeTabsData({ ...s, basis: e.target.value }) }} />
))}
) }