【发布时间】:2020-06-03 08:41:21
【问题描述】:
我有一个需要同步的共享状态组件。
一个状态设置当前的音阶类型,它应该支持所有可能的音阶,但我从小调和大调开始。第二个状态根据所选的音阶类型为所选音符名称设置正确的音符。我大部分时间都在工作,但我需要更好地同步状态,以便一个人可以对另一个人做出反应。
react 社区中的一些人建议“提升状态”,我正试图弄清楚如何正确地做到这一点,尤其是使用钩子。
所以,我已经能够弄清楚如何将设置在组件上的音阶音符的状态提升到一些充满数组的对象中,但现在我需要弄清楚如何提升 @下面代码中的987654321@函数,有12个这样的音符名称组件,每一个都为notes状态设置不同的音阶:
<NoteInput
id="c"
scale={scale}
type="radio"
name="notes"
label="c"
value="c"
onClick={
() => setNotes(
scale === 'minor' ? scalePatterns['c-minor'] :
scale === 'major' ? scalePatterns['c-major'] :
''
)
}
/>
<NoteLabel
whileHover={{ scale: 1 }}
whileTap={{ scale: 0.9 }}
scale={scale}
htmlFor="c"
>
{
scale === 'major' ? 'C' :
scale === 'minor' ? 'C' :
'C'
}
</NoteLabel>
所以现在我需要弄清楚如何将 onClick 道具中的箭头函数“提升”到它自己的函数中,但我不知道如何去做,因为要求是我需要传递不同的状态到函数的每个实例,但保持该状态与另一个状态同步,这是设置音符按钮然后反应的比例类型。
更新:
经过仔细检查,我认为状态功能如下:
Scale Type
| \
| \
| Root Note
| /
| /
Scale Notes
...其中音阶类型将影响选择的根音(例如 C# 或 Db)以及音阶本身的音符。那么音阶音符还需要结合音阶类型知道根音。
【问题讨论】:
-
` onClick = () => { } `你可以像这样传递箭头函数。
标签: reactjs react-hooks