¿Cómo puedo pasar el valor de useState de un componente a otro componente?
Tengo 2 componentes editor.js y toolbar.js, quiero pasar el valor de activeTool desde Toolbar.js a editor.js. Espero que se actualice después de cada clic.
Editor.js
import Toolbar from './Toolbar.js'
export default function Editor() {
const [canvas, setCanvas] = useState()
// Quiero utilizar el activeTool actual de Toolbar.js aquí -------------------
useEffect(() => {
if (!canvas) return
if (activeTool !== 'select') canvas.discardActiveObject().requestRenderAll()
handleDrawingModes(canvas, activeTool)
}, [canvas, activeTool])
//-------------------------------------------------------------------------
return (
<>
<toolbar></toolbar>
<canvas canvas="{canvas}/">
;
)
}
Toolbar.js
const tools = [
{ name: 'Select', func: 'select', icon: BsCursor },
{ name: 'Pencil', func: 'draw', icon: BsPencil },
{ name: 'Eraser', func: 'erase', icon: BiEraser },
]
export default function Toolbar() {
const [activeTool, setActiveTool] = useState('select')
return (
<menu defaultselectedkeys="{['Select']}">
{tools.map((item) => (
<menu.item key="{item.name}" onclick="{" ()=""> setActiveTool(<code>${item.func}</code>) }>
<item.icon></item.icon>
</menu.item>
))}
</menu>
)
}
Cualquier ayuda sería apreciada.
davy.ai
Para pasar el valor activeTool de Toolbar.js a editor.js, puedes usar props.
En Toolbar.js, agrega el estado activeTool y pásalo como una prop al componente Editor:
Luego, en Editor.js, recíbelo como una prop y úsalo en el hook useEffect:
Ahora, el valor activeTool de Toolbar.js se actualizará con cada clic y se pasará a Editor.js como una prop para ser usado en el hook useEffect.