2016-02-17 84 views
1

我在模態中渲染數組。一旦模式關閉,我需要清空數組。下面的代碼更新數組,但點擊closeModal時不清除數組。如何在反應0.14 ES6上點擊清除狀態或清空陣列?

constructor(props,context) { 
    super(props,context); 
    this.state = { 
     myArray: [] 
    }; 

} 

pushData(newVar) { 
    this.setState((state) => { 
     myArray: state.myArray.push(newVar) 
    }); 
} 

closeModal() { 
    this.setState({ 
     myArray: [] 
    }) 
} 
+1

喜歡的東西this.state.myarray = [] – Antonio

+0

嘿對不起,你是對的@Antonio this.state.myarray = []固定我的問題。 –

+0

推數據似乎很奇怪...我會寫this.state.myArray.push(newVar) – Antonio

回答

1

我發現這個問題是我closeModal沒有得到所謂的在所有在關閉模式。我正在做這個關於componentWillUnmount函數的關閉模式。 我明白下面的代碼會導致問題。

this.state.myArray=[] 

我改回了

this.setState({myArray: []}); 
+1

_Never_賦給'this.state '可以修復你的直接問題,但是它會導致bug。 –

+1

是的,使用'this.setState({myArray:[]});'而不是。 –

1

一對夫婦的解決方案與解釋,這個(儘管是在ES5)可以在這裏找到:

https://stackoverflow.com/a/29994490/4572987

+0

我試過他們,但他們沒有工作。 :( –

+0

因此,pushData方法正確地將newVar添加到狀態並導致重新呈現正確?爲什麼不使這些方法一致,並使closeModal看起來像這樣:this.setState((state)=> { myArray:[] } ); – dskoda1

+0

如果這不起作用,我懷疑它與改變實際引用React到myArray變量的代碼有關,並且因此根本不影響它。 – dskoda1