reactjs - 更新 react 组件而无需其外部的父组件

标签 reactjs

如果组件没有父组件,我应该如何正确更新组件?

我找到了两种方法:

First method

这里我通过更改组件的状态来更新组件:

var Hello = React.createClass({
  render: function() {
    if (!this.state) return null;
    return (
      <div>Hello {this.state.name}</div>
    );
  }
});


var component = ReactDOM.render(
  <Hello />,
  document.getElementById('container')
);
component.setState({name: "World"});

setTimeout(function(){
  component.setState({name: "StackOverFlow"});
}, 1000);

Second method

这里我通过 ReactDOM.render 方法更新组件:

var Hello = React.createClass({
  render: function() {
    return (
      <div>Hello {this.props.name}</div>
    );
  }
});


ReactDOM.render(
  <Hello name="world"/>,
    document.getElementById('container')
);

setTimeout(function(){
  ReactDOM.render(
    <Hello name="StackOverFlow"/>,
      document.getElementById('container')
  );

}, 1000);

那么哪种方法是正确的呢?或者也许这是第三种正确方法?

最佳答案

如果您只是想从组件外部触发重新渲染,则公开其forceUpdate方法。

初始的 ReactDOM.render 返回对组件的引用,您可以使用它:

const component = ReactDOM.render(<MyComponent />)

component.forceUpdate()

关于reactjs - 更新 react 组件而无需其外部的父组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34941364/

相关文章:

javascript - 尝试通过 map 方法渲染两个相邻的 tr 元素时, react 唯一的 key prop 错误

javascript - 如何将 css 应用于 textarea 标签内以逗号分隔的文本? (React.js 元素)

javascript - 下一个JS中动态和静态路由的重叠

javascript - TypeError : store. getState 不是一个函数 React-redux

state - ReactJS 从子组件修改父状态

reactjs - React State 未从 prop 初始化

reactjs - 使用 setTimeout 避免 React 中的重新渲染

javascript - 如何创建逆向 react 门户

javascript - 无法在heroku上的node+express网站的index.js中创建新路线

javascript - net::ERR_CERT_COMMON_NAME_INVALID 错误,同时使用获取 API 向元天气 API 发出请求