2014-01-29 65 views
0

我有一個數組對象,它傳遞給我的組件,並通過@props可用。更新道具數組對象

console.log (@props.users.pages) 
> [ ["Tada", "A"], ["Todo", "B"] ] 

其實,我想附加一些東西給它(一個新的數組)。

你有什麼建議此身邊:

function add(){ 
    var arr = Array(); 
    arr.push("Toto", "C"); 
    @props.users.pages.push(arr); 
    @forceUpdate() 
} 

結果調用add()後應:

console.log (@props.users.pages) 
> [ ["Tada", "A"], ["Todo", "B"], ["Toto", "C" ] 

這裏最大的問題是,改編可以由垃圾收集器,因爲破壞它只是本地的,我寧願使用@setProps而不是手動強制更新。

+0

你應該寫'var arr'來給它一個局部作用域,但是在任何情況下'@ props.users.pages.push(arr);'被另一個對象引用的不是GCed。 – wires

+0

對不起,我編輯了我的文章。這是變數,我有 – Kursion

+4

組件不應該編輯它的道具。 'add'函數應該在父組件上調用一個方法,並且父組件應該編輯它作爲道具傳遞的用戶數組。 –

回答

1

記住什麼是醫生說:

到目前爲止,基於其道具的各個部分的呈現本身一次。道具是不可變的:它們從父母傳遞並由父母「擁有」。

在這裏看到Reactive state