通常咱們會把Controller
(控制器)裏面的數據通過處理給到View
(視圖)層作顯現,這種簡單的賦值方式以下html
this.setSate({ toList: response.data })
Vue的實現以下vue
this.todoList = response.data;
好比這是後臺傳遞給咱們的數據, 咱們想要更改數組對象的其中一項`name`屬性值該如何實現呢?
state = {//相似於Vue裏面的data() todoList: [ { img: "xxx", name: "小飛", }, { img: "xxx", name: "小候", }, ] };
咱們先來看一下在vue中如何實現
this.todoList[0].name = "Jony"; //或者 this.$set(this.todoList[0],"name","Jony");
哇~其實比較簡單,那麼在React中如何實現呢?react
想象中是這樣的...數組
this.setState({ todoList[0].name:"Jony" }) //這樣報錯了,立馬想到另外一種方式 let obj = { img:"xxx", name:"Jony" } this.setState({ todoList[0]:obj })
都是不行的,咱們的編輯器和瀏覽器都在報錯,告訴咱們不能這麼寫
瀏覽器
那麼怎麼來實現呢編輯器
//三目運算符 `key == 0` 是我寫死的 //若是是點擊傳入的話能夠是`key == index(下標)` const todoList = [...this.state.todoList]; //淺拷貝一下 this.setState({ todoList: todoList.map((item,key)=>key == 0?{...item,name: "Jony"}:item) });
這是官網針對 setState的描述
this