2017-07-13 20 views
0

福利局,讓我們來看看一些代碼,我使用自動響應的setState與STANDAR JavaScript函數上ReactJS

<!-- language: lang-js --> 
import Oak from './Oak' 
class Space extends Component { 
    componentWillMount() { Newstate = Oak(oldState) } 
    componentWillUpdate() { } 

    render() { 
    return() 
    } 
} 

function mapStateToProps (state) { return {bigStateTree: state.bigTree } } 
export default connect(mapStateToProps)(Space) 
---------- 
//Oak.js 
export default function Oak (inputState = null) { 
dosome 3D dance 
return bigStateTree 
} 

使用Ctrl面板(Space.js)上ReactJS和終極版,在畫布上一些3D(橡樹。 JS)。
現在的問題是:
我希望從返回值中獲取Oak.js的數據,然後重新渲染(再次調用Newstate = Oak(oldState))3d基底,這是3d變化狀態時的循環當狀態變化3d變化時變化,不點擊不變。上建議

基地的StackOverflow NEVER mutate this.state directly

我不知道現在該怎麼辦...

回答

0

首先你需要設置初始狀態的構造。你這樣做如下,其中yourProperty是你想要的鍵,默認值是您選擇一個值)

this.state = { yourProperty: defaultValue } 

然後在componentWillMount(:

this.setState({ yourProperty: Oak(this.state.yourProperty) }) 

最後訪問的狀態render()方法:

return (
    <div>{this.state.yourProperty}</div> 
    ); 

唯一的一次,你可以分配一個值this.state沒有的setState方法是在構造函數中。另外請注意,您不能在render()方法中更改狀態。

閱讀React組件生命週期將很有用。

+0

謝謝@Andre,我讀過ReactJs文檔。目前,我使用減速機來調度商店。與通過調用創建的新狀態(Newstate = Oak(oldState)),所以此函數將再次調用。然後再重新投降。這是可能的,或者我通過調用一個重現狀態的函數來進入錯誤的軌道。 –

+0

我傾向於將redux的使用限制在合理的位置。你需要問自己,你是在處理一些應該是本地狀態還是應該在組件之間共享的東西。 –

+0

所有組件都需要與Store共享,只有幾個組件,除了畫布 –