2016-07-05 82 views
0

悬崖:奇怪的行为/装填图案形成

我试图从用户的以前的条目预先填写表格,这是所有存储在MongoDB中colelction我做这做传统的Javascript:

​​

,除非我刷新页面,在这种情况下,我得到this.props.iData未定义的错误也能正常工作。因此,每当我使用预填充数据访问该页面时,它都可以正常工作,并且订阅工作正常。但是,当我刷新同一页面时,订阅加载速度不够快。

订阅像这样做:

export default createContainer(function(){ 
    const subHandle = Meteor.subscribe("iData", function(){ 
    }); 
    const isLoading = !subHandle.ready(); 
    return { 
    isLoading, 
    iData: Poll.find().fetch(), 
    } 
}, UserSettings) 

我必须做一些错误的,这样的事情发生,它的发生的方式。

回答

2

当您调用componentDidMount时,您是否确定数据已准备就绪?而且你也不应该在反应中使用document.getElementById()。

在反应中你需要使用refs。提醒我用裁判来代替IDS

class Sample extends React.Component { 
 
    render() { 
 
     return (
 
      <div> 
 
      {!this.props.isLoading ? (
 
      <input value = {this.props.someValue}/> 
 
      ) : (
 
       <p>Loading </p> 
 
      )} 
 
      </div> 
 
     ); 
 
    } 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

+0

感谢:

class Sample extends React.Component { componentDidMount() { this.ref.input.value = 'some value'; } render() { return ( <input ref="input" /> ); } }

你也可以做到这一点。无论如何,我确保数据在'componentDidMount()'触发之前被加载,但是当我刷新页面或点击后退按钮时,仍然有相同的错误。 –