Javascript 如何在redux状态下更好地构建数据?
我是新手,所以这可能是一个非常初级的问题,但我希望对于优秀的人来说,可能有一个解决方案Javascript 如何在redux状态下更好地构建数据?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我是新手,所以这可能是一个非常初级的问题,但我希望对于优秀的人来说,可能有一个解决方案 songData()此处返回大量歌曲对象的数组 这就是为什么[0]在currentSong:{currentSongData:songData()[0]}, 这是我的redux状态: const initState = { allSongs: songData(), currentSong: { currentSongData: songData()[0] }, isPlaying: false,
songData()
此处返回大量歌曲对象的数组
这就是为什么[0]
在currentSong:{currentSongData:songData()[0]},
这是我的redux状态:
const initState = {
allSongs: songData(),
currentSong: { currentSongData: songData()[0] },
isPlaying: false,
isLibraryOpen: false,
songTimer: [
{
currentTime: 0,
duration: 0,
},
],
};
每当我必须访问当前歌曲中的任何内容时,我都必须编写如下内容:
currentSong.currentSongData.name
或者,如果我将currentSong定义为currentSong:[songData()[0]],
则类似:
currentSong[0].name
有没有更好的方法来定义redux状态,在那里我访问数据时不必写这么长的东西
我想通过书写来访问它
currentSong.name
顺便说一句,这是歌曲对象的结构
{
name: 'Cold Outside',
cover: 'https://chillhop.com/wp-content/uploads/2020/09/09fb436604242df99f84b9f359acb046e40d2e9e-1024x1024.jpg',
artist: 'Nymano',
},
可以使用属性扩展表示法
currentSong: { ...songData()[0] }
我倾向于存储currentSong的密钥id,您可以从
所有歌曲中提取其数据内容。否则,您将复制数据—这是您最好避免的。这样,在初始状态下,您将拥有currentSongId:songData()[0]。id
那么,在你的活动中,你会如何处理这些问题呢?你可以用。此功能允许您过滤数据,以便正确使用数据。在您的功能组件中,您可以提取如下内容:
// at your component function
const selectedSong = useSelector(state => state.allSongs.filter(({ id }) => id === state.currentSongId))
如果您在useSelector docs上进一步阅读以下内容,您可以更进一步,将其值记录下来,以避免与另一个库组合使用时出现不必要的重播。我建议:currentSong:songData()[0]我同意,这会更好)@AlekseyPolonkaAlex我第一次这样做了。但是我在上面提到,我必须编写currentSong[0]。name
才能访问name@Ilyas这一个确实有效。最好将songData()结果写入一个变量,以避免不必要的重新运行