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

标签 javascript reactjs

我似乎误解了 React.js 的一些基本部分。

http://facebook.github.io/react/docs/component-api.html

它说,一个 react 组件有像 setState() 这样的方法。

但是当我这样做的时候:

var MyComp = React.createClass({

   getInitialState: function() {
      return {dummy: "hello"};
   },

   render: function() { return React.DOM.h1(null, this.state.dummy + ", world!") }
}

var newComp = MyComp(null);

React.renderComponent(newComp, myDomElement);
MyComp.setState({dummy: "Good Bye"}); // Doesn't work. setState does not exist
newComp.setState({dummy: "Good Bye"}); // Doesn't work either. setState does not exist

找不到 setState() 方法。但是在文档中它说是 Component API,那么我在这里弄错了什么?

最佳答案

根据这个blog postthis writeup ,调用 MyComp 不再返回实例,它返回一个轻量级描述符。

反模式:

var MyComponent = React.createClass({
  customMethod: function() {
   return this.props.foo === 'bar';
  },
  render: function() {
  }
});

var component = <MyComponent foo="bar" />;
component.customMethod(); // invalid use!

正确用法:

var MyComponent = React.createClass({
  customMethod: function() {
   return this.props.foo === 'bar';
  },
  render: function() {
  }
});

var realInstance = React.renderComponent(<MyComponent foo="bar" />, root);
realInstance.customMethod(); // this is valid

关于javascript - react.js ReactComponent 不提供 setState()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791955/

相关文章:

javascript - XMLHttpRequest & FormData 不提交数据

javascript - 如何解决 DOM 元素上的警告 : React does not recognize the `currentSlide` , ` slideCount` Prop

javascript - 如何在 React 中同步组件共享状态钩子(Hook)

javascript - 未显示警报之前的 HTML

javascript - 我必须单击按钮两次才能在 React 中正确渲染状态

javascript - Assets 在 GatsbyJS 项目(Netlify 托管)中加载速度非常慢

javascript - 如何在 VS Code 中获得更好的格式化?

javascript - iE8 中奇怪的网页问题...可能是 javascript

javascript - JS RegExp 捕获每场比赛的所有组和位置

javascript - 如何使用 jQuery/Javascript 更改 gridview 中的 <tr> 属性