在本机中获得本地状态的初始值

时间:2017-11-21 07:05:58

标签: reactjs react-native

我的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);。但是我在这里在内存中再创建一个引用,每次都会创建一个引用。 这就是我所理解的,请解释我的正确方法。

1 个答案:

答案 0 :(得分:0)

LocalDate

这会尝试在Map中找到this.setState({ cloneObj }); 并替换它,但这不是您想要的

您需要做的是:

cloneObj

这将覆盖与cloneObj匹配的所有状态属性。基本上它会重置状态。

所以你可以这样做:

state

然后在任何事件上你可以像

那样做
this.setState({ ...this.state , ...cloneObj });