Reactjs 反应:如何正确更新状态数组?setState(state.concat(数组))不工作 问题:

Reactjs 反应:如何正确更新状态数组?setState(state.concat(数组))不工作 问题:,reactjs,react-native,Reactjs,React Native,我无法通过其值更新useState,React Native中的数组 背景: 我开发了录音应用程序,我想保留最后5秒,每2.5秒更新一次: [旧音频数据](5秒)和[新音频数据](2.5秒) ->(裁剪前2.5秒的旧音频数据) [旧音频数据](最后2.5秒)+[新音频数据](2.5秒) 更新时应使用以前的状态 const newSignals = signals.slice(signals.length - data.length, signals.length).concat(data); s

我无法通过其值更新useState,React Native中的数组

背景: 我开发了录音应用程序,我想保留最后5秒,每2.5秒更新一次:

[旧音频数据](5秒)和[新音频数据](2.5秒)

->(裁剪前2.5秒的旧音频数据)

[旧音频数据](最后2.5秒)+[新音频数据](2.5秒)


更新时应使用以前的状态

const newSignals = signals.slice(signals.length - data.length, signals.length).concat(data);
setSignals(newSignals); 
致:


最好始终将状态视为不可变的。我认为您可以通过这样的方式实现这一点:
setSignals(prev=>[…prev.filter((_e,I)=>I
[0, 0, 0, 0, ..., -42, 64, 78]
[0, 0, 0, 0, ..., 12, 22, 132]
[0, 0, 0, 0, ..., 10, -222, 121]
const newSignals = signals.slice(signals.length - data.length, signals.length).concat(data);
setSignals(newSignals); 
setSignals(prev => prev.slice(signals.length - data.length, signals.length).concat(data));