2016-05-25 2 views
0

Вот как я продлить Immutable.RecordКак установить значение по умолчанию

import Immutable from 'immutable'; 

const DATA_DEFAULTS = { 
    id: String, 
    data: String, 
    ref_id: String, 
}; 

export default class Data 
    extends Immutable.Record(DATA_DEFAULTS) {} 

Если представление JSON не содержит ref_id, а затем, когда я пытаюсь напечатать значение поля в консоли Chrome devtool, Я получаю:

> data.ref_id 
String() { [native code] } 

Я думаю, что это причина, почему я не могу отфильтровать объекты с пустой ref_id в списке

a = [] // a list of data 
b = a.filter(x => x.ref_id != '') // b is the same as a 

Я предполагаю, что это может быть исправлено либо:

  • установить значение по умолчанию для поля в случае Immutable.Record, когда поле отсутствует в данных JSon

  • использовать другой способ для обнаружения если поле не установлен в экземпляре

для второго подхода, я пытался, например, data.has('ref_id') и всегда сообщают true независимо от того, имеет ли поле какое-либо действительное значение.

Мои вопросы:

1) Могу ли я установить значение по умолчанию в Immutable.Record?

2) Как отфильтровать поля, которые могут или не могут существовать в Immutable.Record

3) Что такое правильный способ проверить наличие допустимого значения в поле в экземпляре Immutable.Record?

ответ

1

Вы явно устанавливаете значения по умолчанию для каждого из полей в функцию String. String здесь не тип данных, если это то, о чем вы думали. То, что вы, кажется, хотите,

const DATA_DEFAULTS = { 
    id: '', 
    data: '', 
    ref_id: '', 
}; 

1) Могу ли я установить значение по умолчанию в Immutable.Record?

Как вы уже это сделали, вам просто нужно установить правильное значение по умолчанию.


2) Как отфильтровать поля, которые могут или не могут существовать в Immutable.Record

полей на запись всегда существует. От docs:

Записи всегда имеют значение для ключей, которые они определяют. удаление ключа из записи просто сбрасывает его до значения по умолчанию для этого ключа.


3) Что такое правильный способ проверить наличие допустимого значения в поле в экземпляре Immutable.Record?

Вы можете использовать значение по умолчанию, которое, как вы знаете, не будет явно присвоено полю в противном случае. Это может быть null или символ.

 Смежные вопросы

  • Нет связанных вопросов^_^