2017-07-31 73 views
0

我想將DateInput封裝到帶有預填充解析函數參數的MyDateInput中,以便無處不在重複parse={dateParser}DateInput默認解析函數

所以我創造了這樣的元素:

import React from 'react'; 
import { DateInput } from 'admin-on-rest'; 
import moment from 'moment'; 

const dateParser = date => { 
    // v is a `Date` object 
    if (!(date instanceof Date) || isNaN(date)) return; 
    return moment(date).format('YYYY-MM-DD'); 
}; 

const MyDateInput = (props) => { 
    return (
     <DateInput {...props} parse={dateParser} /> 
    ); 
}; 

其中沒有如我所料,從文檔我發現,我必須這樣做工作,所以,但源參數不會被解析,因爲它必須是:

import { Field } from 'redux-form'; 

const MyDateInput = (props) => { 
    return (
     <Field name='date' component={DateInput} {...props} parse={dateParser} /> 
    ); 
}; 

當我把2個這樣的輸入放到一個表格中時,它會導致兩個輸入的合併。 有沒有適當的方法?

+0

你能更具體一點嗎? 「它導致兩者的輸入合併」是什麼意思? –

+0

正如第一個答案中提到的那樣,redux-form按名稱存儲數據,所以當我爲Field設置名稱時,它會從存儲區中爲所有具有相同名稱的字段獲取數據 – Sindbag

回答

1

Redux表單名稱prop設置字段名稱,該字段處於字段組件將影響的狀態。

所以你需要在每次你想使用Field組件的時候給一個不同的名字道具。

您可以從調用Wrapped DateInput comp的窗體中提供名稱作爲道具,確保它是獨一無二的。