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
當您提交頁面時,頁面是否重新加載? –