草庐IT

SetState

全部标签

javascript - 异步设置 ReactJS 状态

如果您执行更新componentWillMount中的状态的异步操作(如文档所述),但在异步调用完成之前组件已卸载(用户导航离开),您最终会异步回调试图在一个现在未安装的组件上设置状态,一个"InvariantViolation:replaceState(...):Canonlyupdateamountedormountingcomponent."错误。解决这个问题的最佳方法是什么?谢谢。 最佳答案 您可以使用component.isMounted方法在替换组件状态之前检查组件是否实际附加到DOM。Docs.isMounted()r

javascript - 如何在回调 : ReactJS 中使用 setState

以下是我用来设置状态的代码。handleAddNewQuiz(event){this.quiz=newQuiz(this.db,this.newQuizName,function(err,affected,value){if(!err){this.setState({quiz:value});//ERROR:Cannotreadproperty'setState'ofundefined}});event.preventDefault();};即使数据库创建成功,我也无法调用this.setState,因为它始终未定义。我试过:self=this;handleAddNewQuiz(eve

javascript - 在 promise 中使用 setState 后,React 不会重新呈现

每次更改props时,组件都会调用onTermChange并获取此组件的详细信息,并promise返回一个对象数组。问题是当调用setState时,什么也没有发生,组件也没有重新渲染新的细节。module.exports=React.createClass({displayName:'TaxonomySelect',getInitialState:function(){return{children:undefined};},componentDidMount:function(){this.onTermChange(this.props.term);},componentWillRe

javascript - React - 在不使用 setState 的情况下更改状态 : Must avoid it?

我的代码有效,但我有一个最佳实践问题:我在状态中有一组对象,用户交互将一次更改一个对象的值。据我所知,我不应该直接更改状态,我应该始终使用setState代替。如果我想以任何代价避免这种情况,我将通过迭代深度克隆数组,并更改克隆。然后将状态设置为克隆。在我看来,避免改变我以后无论如何都会改变的状态只会降低我的表现。详细版:this.state.data是一个对象数组。它代表论坛中的主题列表,收藏夹按钮将切换,调用clickCollect()。由于我在状态中有一个数组,当我更改一个项目的is_collected属性时,我需要创建一个数组的副本来使用,并且在更改为新值后,我可以将其设置为状

javascript - 使用 parseFloat 时,React onChange 正在吞下我的小数点

我有一个简单的onChange,它接受用户的输入并对其进行解析并将状态设置为呈现。这是代码。importReact,{Component}from'react';import'./App.css';classAppextendsComponent{constructor(){super();this.state={random:{foo:0}}}onChange(e){letrandom=this.state.random;random[e.target.name]=parseFloat(e.target.value);this.setState({random});}render()

javascript - react.js ReactComponent 不提供 setState()?

我似乎误解了React.js的一些基本部分。在http://facebook.github.io/react/docs/component-api.html它说,一个react组件有像setState()这样的方法。但是当我这样做的时候:varMyComp=React.createClass({getInitialState:function(){return{dummy:"hello"};},render:function(){returnReact.DOM.h1(null,this.state.dummy+",world!")}}varnewComp=MyComp(null);Re

javascript - Reactjs setState 箭头函数语法

根据ReactDocs我们可以有两种setState方法,一种使用对象语法,另一种使用函数,如下所示this.setState((prevState,props)=>({counter:prevState.counter+props.increment}));我对arrowfunction语法的理解类似于()=>{},其中花括号跟在箭头=>之后,但是作为根据样本,它是圆括号而不是花括号这些语法()=>{}和()=>({})之间有什么区别。示例代码根据在this.setStage(prevStage=>({}))语法用于handleClick函数时有效的文档进行了尝试,如果您将其更改为t

javascript - React.js setState() 带有循环内键的变量?

有没有办法使用字符串变量的值作为setState()的键?getInitialState:function(){return{foo:'',bar:''}}someOtherHandler:function(){vararr=['foo','bar'];var_this=this;varnumber=Math.random();for(variinarr){_this.setState({arr[i]:number});}}React会抛出上述语法错误,将arr[i]设置为变量最终会使用该变量的名称设置新状态。 最佳答案 您可以在调

javascript - 在 React JS 的 this.setState 回调中使用 this.setState?

是否可以在this.setState的回调中调用this.setState?我正在制作一个RoguelikeDungeon并有一个设置,其中在this.setState的回调中使用了一个辅助函数,它再次调用this.setState。我的游戏此时卡住。所以我在React组件中有一个对象,它有一个生成随机二维数组映射的方法:this.Dungeon.Generate();当游戏开始时,我们在componentDidMount()中调用组件中的如下函数:componentDidMount:function(){this.Dungeon.Generate();this.setState({b

javascript - 在 await 之后调用 setState 时状态立即可用

在等待另一个函数并将状态记录到控制台后调用setState-该值立即可用。我知道setState是异步的,在所有其他情况下,它不会在调用后立即可用(但会在setState回调中可用)在没有等待的情况下使用(预期)//initalvaluestateis0constresponse=fetchSomething()this.setState({value:5})console.log(this.state.value)//prints0与等待一起使用//initalvaluestateis0constresponse=awaitfetchSomething()this.setState(