【发布时间】:2022-01-02 17:43:11
【问题描述】:
我有 2 个组件 editor.js 和 toolbar.js,我想将 activeTool 值从 Toolbar.js 传递给 editor.js。我希望它在每次点击后都会更新。
Editor.js
import Toolbar from './Toolbar.js'
export default function Editor() {
const [canvas, setCanvas] = useState()
// I want current activeTool from Toolbar.js to use here -------------------
useEffect(() => {
if (!canvas) return
if (activeTool !== 'select') canvas.discardActiveObject().requestRenderAll()
handleDrawingModes(canvas, activeTool)
}, [canvas, activeTool])
//-------------------------------------------------------------------------
return (
<>
<Toolbar />
<Canvas canvas={canvas}/>
</>
)
}
工具栏.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(`${item.func}`) }>
<item.icon />
</Menu.Item>
))}
</Menu>
)
}
任何帮助将不胜感激。
【问题讨论】:
标签: javascript reactjs react-hooks components react-props