识别触发状态更改的组件的规范 React+Flux 方法是什么?
我有一个允许用户使用 HSL 颜色空间创建调色板的应用程序。
这是我的应用程序的组件结构:
Container (this component gets state and passes it down the chain)
| PalettePicker
| ColorPicker
| Slider (this component fires action)
| Slider
| Slider
| (As many ColorPickers as colors)
| ImageSamples (not relevant, but dependent on palette)
下面看一下ColorPicker
组件:
每个都ColorPicker
包含 3 个Slider
组件,它们触发更新商店的事件。商店然后更新调色板并将整个调色板向下传递给Container
组件,组件将其向下传递props
给它的子组件。
这是我处理滑块更改事件的函数Store
(我正在使用 Reflux):
sliderChange: function(newValue) {
var modifiedPalette = this.palette;
modifiedPalette[newValue.colorIndex][newValue.colorPartsIndex] = newValue.value;
this.trigger(modifiedPalette)
}
我的调色板是一组 HSL 颜色值,例如:
[ [350, 100, 50], [340, 100, 40], ... ]
“颜色”是上述 3 项数组之一,我将颜色数组中的每个项称为“颜色部分”,因为它代表颜色的 H、S 或 L。
将颜色和颜色部分索引作为道具向下传递似乎不雅。我目前正在构建这样的组件:
colorPickers = palette.map(function(color, i) {
return (
<ColorPicker
key={i}
colorIndex={i}
color={color}
/>
)
});
据我所知,我需要colorIndex
作为道具传递,以便我的子组件可以知道它映射到调色板中的哪种颜色,以便我可以将该知识传递给商店。
什么是惯用的 React+Flux 方式来做到这一点?