คำถามติดแท็ก spread-syntax

30
วิธีการผสานลึกแทนที่จะรวมตื้น?
ทั้งObject.assignและObject Spreadจะทำการผสานตื้นเท่านั้น ตัวอย่างของปัญหา: // No object nesting const x = { a: 1 } const y = { b: 1 } const z = { ...x, ...y } // { a: 1, b: 1 } ผลลัพธ์คือสิ่งที่คุณคาดหวัง อย่างไรก็ตามถ้าฉันลองทำสิ่งนี้: // Object nesting const x = { a: { a: 1 } } …

11
คัดลอกลึกใน ES6 โดยใช้ไวยากรณ์การแพร่กระจาย
ฉันกำลังพยายามสร้างวิธีการคัดลอกแผนที่แบบเจาะลึกสำหรับโปรเจ็กต์ Redux ของฉันซึ่งจะทำงานกับอ็อบเจ็กต์แทนที่จะเป็นอาร์เรย์ ฉันอ่านว่าใน Redux แต่ละรัฐไม่ควรเปลี่ยนแปลงอะไรในสถานะก่อนหน้านี้ export const mapCopy = (object, callback) => { return Object.keys(object).reduce(function (output, key) { output[key] = callback.call(this, {...object[key]}); return output; }, {}); } มันได้ผล: return mapCopy(state, e => { if (e.id === action.id) { e.title = 'new item'; } return e; }) อย่างไรก็ตามมันไม่ได้คัดลอกรายการภายในอย่างลึกล้ำดังนั้นฉันต้องปรับแต่งเพื่อ: export const …

3
สถานะเป็นอาร์เรย์ของวัตถุเทียบกับวัตถุที่คีย์โดย id
ในบทที่เกี่ยวกับการออกแบบรูปร่างสถานะเอกสารแนะนำให้เก็บสถานะของคุณไว้ในอ็อบเจ็กต์ที่คีย์ด้วย ID: เก็บทุกเอนทิตีในอ็อบเจ็กต์ที่จัดเก็บโดยมี ID เป็นคีย์และใช้ ID เพื่ออ้างอิงจากเอนทิตีหรือรายการอื่น พวกเขาไปสู่สถานะ คิดว่าสถานะของแอปเป็นฐานข้อมูล ฉันกำลังทำงานเกี่ยวกับรูปร่างสถานะสำหรับรายการตัวกรองซึ่งบางส่วนจะเปิดอยู่ (แสดงในป๊อปอัป) หรือมีตัวเลือกที่เลือกไว้ เมื่อฉันอ่าน "คิดว่าสถานะของแอปเป็นฐานข้อมูล" ฉันคิดว่ามันเป็นการตอบสนอง JSON เนื่องจากจะส่งคืนจาก API (ฐานข้อมูลสนับสนุน) ดังนั้นฉันคิดว่ามันเป็น [{ id: '1', name: 'View', open: false, options: ['10', '11', '12', '13'], selectedOption: ['10'], parent: null, }, { id: '10', name: 'Time & Fees', open: false, options: ['20', '21', '22', …

6
การใช้ไวยากรณ์การแพร่กระจายและ Set () ใหม่ด้วย typescript
ฉันใช้รหัสต่อไปนี้เพื่อรับหมายเลขเฉพาะ: let uniques = [ ...new Set([1, 2, 3, 1, 1]) ]; // [1, 2, 3] อย่างไรก็ตาม typescript รายงานข้อผิดพลาดต่อไปนี้: Type 'Set' ไม่ใช่ประเภทอาร์เรย์ ฉันไม่ใช่นินจานักพิมพ์มีใครบอกได้ไหมว่ามีอะไรผิดปกติที่นี่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.