使用标准Javascript函数自动反应设置状态

使用标准Javascript函数自动反应设置状态,javascript,reactjs,react-redux,state,Javascript,Reactjs,React Redux,State,ReactJS上的新手,让我们看看我正在使用的一些代码 <!-- language: lang-js --> import Oak from './Oak' class Space extends Component { componentWillMount () { Newstate = Oak(oldState) } componentWillUpdate () { } render () { return() } } function mapSta

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
}

从“./Oak”导入橡木
类空间扩展组件{
componentWillMount(){Newstate=Oak(oldState)}
componentWillUpdate(){}
渲染(){
返回()
}
}
函数mapstatetops(state){return{bigStateTree:state.bigTree}
导出默认连接(MapStateTops)(空格)
----------
//橡树
导出默认函数Oak(inputState=null){
dosome 3D舞蹈
返回bigStateTree
}
在ctrl面板(Space.js)上使用ReactJS和Redux,在画布上使用一些3d(Oak.js)。
问题是:
我希望通过返回值从Oak.js中获取数据,然后重新返回(再次调用Newstate=Oak(oldState))状态中的3d基础,当状态更改3d更改时,它是循环状态更改,无需单击无更改

基于StackOverflow的建议


我不知道现在该做什么。

首先在构造函数中,您需要设置初始状态。您可以按如下方式执行此操作,其中yourProperty是您想要的键,defaultValue是您选择的值:

this.state = { yourProperty: defaultValue }
然后在componentWillMount()中:

最后,要访问render()方法中的状态:

返回(
{this.state.yourProperty}
);
只有在构造函数中才能为this.state赋值而不使用setState方法。还要注意,不能在render()方法中更改状态


阅读React组件生命周期将非常有用

谢谢你@Andre,我确实读过文件。目前,我正在使用减速机,以调度存储。使用通过调用(Newstate=Oak(oldState))创建的新状态,因此此函数将再次调用。然后再次播放。这是可能的,或者我调用了一个复制状态的函数,走错了方向。我倾向于将redux的使用限制在合理的范围内。您需要问问自己,您所处理的是本地状态还是组件之间共享。除了负责更新状态和调度的Canvas之外,所有组件都需要与存储共享,只有少数组件需要与存储共享。您的组件应该通过this.props接收更新的redux状态,因为MapStateTrop使用它来保持画布的最新数据并更新数据库
this.setState({ yourProperty: Oak(this.state.yourProperty) })
return (
    <div>{this.state.yourProperty}</div>
    );