0
虽然你不需要看下面的代码来理解这个问题,但我添加了它,以防需要可视化场景。每当表单提交时,都会调用addList方法。当一个方法被调用时,React组件是否自动更新自身
组件自我更新。但是我并没有期待这种行为,这就是为什么起初我试图将我的列表分配给状态,以便当状态改变时组件会根据我的意愿更新自己。
无论如何它已经更新自己,但为什么?哪种方式更有效率?
import React,{Component} from 'react';
import TrackerReact from 'meteor/ultimatejs:tracker-react';
import {Lists} from '../lib/collections/lists.js';
export default class App extends TrackerReact(Component) {
constructor(){
super();
// this.state = {lists : this.lists()}
}
lists(){
return Lists.find().fetch();
}
addList(e){
e.preventDefault();
//let text = this.refs.list.value ;
let text = this._inputList.value ;
console.log(this._inputList.value);
Lists.insert({
title : text
});
this._inputList.value = "";
//this.setState({lists : this.lists()});
}
render() {
return (
<div>
<h2>Lists</h2>
<ul>
{this.lists().map((a,b)=>(
<List key={a._id} title={a.title} />
))}
</ul>
<form onSubmit={this.addList.bind(this)}>
<input
type="text"
ref={(input)=>{
this._inputList = input ;
}}
placeholder="add list bro"
/>
</form>
</div>
)
}
}
因为您最有可能导入的列表正在更新并导致顶层组件重新呈现。然后调用get和re更新 –
如果我没有任何数据流,那么我只是在提交并调用一个方法,会导致组件的重新渲染而没有改变状态? – FurkanO
当您提交页面时,页面是否重新加载? –