我的react本机组件中有一些本地状态。我在这里保存了一些数据,并希望从这里清除导航上的所有本地状态。在我的构造函数中,我有
Error:Default method boolean test(java.lang.Object null) not supported in Android API level less than 24
Error:Default method void forEach(java.util.function.Consumer null) not supported in Android API level less than 24
Error:Static method void com_google_common_collect_Multiset_lambda$forEachEntry$0(java.util.function.ObjIntConsumer null, com.google.common.collect.Multiset$Entry null) not supported in Android API level less than 24
Error:Default method void forEach(java.util.function.BiConsumer null) not supported in Android API level less than 24
Error:Default method void addAll(java.lang.Iterable null) not supported in Android API level less than 24
Error:Default method boolean enclosesAll(java.lang.Iterable null) not supported in Android API level less than 24
Error:com.android.jack.JackAbortException
Warning:Exception while processing task java.io.IOException: com.android.jack.api.v01.CompilationException
Error:Execution failed for task ':MyApp:compileDebugJavaWithJack'.
> java.io.IOException: com.android.jack.api.v01.CompilationException
在导航之前,我必须像构造函数一样设置所有这些属性。而不是这个,如果我将克隆状态 constructor(props) {
super(props);
this.state = {
date: '',
selectedTourType: 0,
tourType: [],
group: false,
no_of_days: 5,
scheduled: false,
search_text: '',
searchedRegion: '',
budget: null,
editing: null,
path: [],
makers: [],
selected: false,
pressedIndex: 0,
users: [],
selected_users: [],
destination: null,
mapModalVisible: false,
milestoneModalVisible: false,
predictions: [],
searchedRegionPredictions: [],
polygons: []
};
}
并将此对象用于setState const cloneObj = Object.assign({}, this.state);
。但是我在这里在内存中再创建一个引用,每次都会创建一个引用。
这就是我所理解的,请解释我的正确方法。
答案 0 :(得分:0)
LocalDate
这会尝试在Map
中找到this.setState({ cloneObj });
并替换它,但这不是您想要的
您需要做的是:
cloneObj
这将覆盖与cloneObj匹配的所有状态属性。基本上它会重置状态。
所以你可以这样做:
state
然后在任何事件上你可以像
那样做this.setState({ ...this.state , ...cloneObj });