2016-10-26 5 views
0

Есть ли нежелательные побочные эффекты с аргументами по умолчанию для создателя действий ? Или даже используя Object.assign внутри создателя действия?Аргументы по умолчанию в создателе действия Redux

Например, у нас есть создатель действия под названием notify(), который создает уведомления в нашем магазине.

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

Наши действия создают выглядит так:

export function notify(notification) { 
    return { 
    type: ADD, 
    notification, 
    }; 
} 

И наш createNotice выглядит следующим образом:

export function createNotice(title = '', message, level = 'info', settings = {}) { 
    return merge({}, { 
    title, 
    message, 
    key: (new Date).getTime(), 
    action: 'Dismiss', 
    dismissAfter: 5000, 
    className: level, 
    }, settings); 
} 

Я действительно нелюбовь приходится импортировать createNotice и notify плюс связать notify для отправки для каждого который использует его для выполнения следующих операций:

<Button onClick={() => nofity(createNotice('Something Happened', 'I think it worked!'))} /> 

Id, а что-то вроде следующего:

<Button onClick={() => nofity('Something Happened', 'I think it worked!')} /> 

через имеющий создателя действий как таковой:

export function notify(notice) { 
    return { 
    type: ADD, 
    createAction(notice), 
    }; 
} 

Но что чувствует, как Redux антишаблоном мне?

ответ

0

Функция createNotice действительно является вспомогательной функцией для notify.

Ваш первый подход не имеет для меня никакого смысла, поскольку ваш компонент не должен знать о createNotice.

Ваш второй подход - это то, что я буду делать. Однако вы можете захотеть распространить ...createNotice(notice) или дать ему имя