Bagaimana cara saya menambahkan elemen dalam susunan arr[]
redux state di reducer? Saya melakukan ini-
import {ADD_ITEM} from '../Actions/UserActions'
const initialUserState = {
arr:[]
}
export default function userState(state = initialUserState, action)
{
console.log(arr);
switch (action.type)
{
case ADD_ITEM:
return {
...state,
arr: state.arr.push([action.newItem])
}
default:
return state
}
}
react-native
redux
react-redux
coderzzz18
sumber
sumber
arr: [...state.arr, why here?]
[action.newItem, ...state.arr]
akan memasukkan elemen di posisi pertama.push
tidak mengembalikan array, tetapi panjangnya ( docs ), jadi apa yang Anda lakukan adalah mengganti array dengan panjangnya, kehilangan satu-satunya referensi untuk itu yang Anda miliki. Coba ini:sumber
Object.assign
untuk perubahan array di dalam negara tolong?Object.assign
? Ini digunakan untuk objek, dan pada dasarnya hal yang sama. Di mana Anda memilikiarr:[...state.arr, action.newItem]
Anda dapat menggunakanobj: Object.assign({}, state.obj, action.newItem
, asalkan ituobj
dannewItem
benda. Jika Anda ingin melakukan itu ke seluruh negara bagian, Anda bisa melakukannyaObject.assign({}, state, {arr: [..state.arr, action.newItem]})
var obj = { isLoading: true, data: ['a', 'b', 'c', 'd'] } var newObj = Object.assign({}, obj, { data: [...obj.data, 'e'] });
dan ini memberi saya ini:{ isLoading: true, data: [ 'a', 'b', 'c', 'd', 'e' ] }
untuk newObj yang cukup baik untuk apa yang saya butuhkan. Tapi saya ingin menggunakan Object.assign tanpa operator spread untuk menghasilkan hasil yang sama. Apakah itu mungkin?[].concat(obj.data, ['e'])
, jika Anda tidak ingin menggunakan fitur ES6. Object.assign dimaksudkan untuk objek, dan meskipun itu tidak akan memberi Anda kesalahan untuk menggunakannya pada array, hasilnya bukan gabungan dari array. Jika Anda mencobaObject.assign({}, [1, 2, 3], [4])
, Anda mendapatkan[4, 2, 3]
hasilnya.Jika Anda perlu memasukkan ke posisi tertentu dalam array, Anda dapat melakukan ini:
sumber
Saya punya sampel
sumber