如何從標準JS日期對象格式化日期,該日期對象來自服務器,並通過REST API將其送入React,該REST API具有以下初始輸出:Redux Reducer在命中狀態之前格式化日期
"2016-05-16T13:07:00.000Z"
成不同的格式?所以它被列爲DD MM YYYY
?
我可以做這個動作的減速通過操縱請求的結果,或有效載荷:
import { FETCH_BOOKS, FETCH_BOOK } from '../actions';
const INITIAL_STATE = { books: [], book: null };
export default function(state = INITIAL_STATE, action) {
switch(action.type) {
case FETCH_BOOK:
return { ...state, book: action.payload.data };
case FETCH_BOOKS:
return { ...state, books: action.payload.data };
}
return state;
}
用行動:
export function fetchBooks() {
const request = axios.get('/api/books');
return {
type: FETCH_BOOKS,
payload: request
}
}
fetchBooks()
是所謂的書籍的componentWillMount()
方法React組件:
componentWillMount() {
this.props.fetchBooks();
}
api retu RNS以下的結構化JSON:
[{"_id":0,"date":"2016-05-16T13:07:00.000Z","title":"Eloquent JavaScript","description":"Learn JavaScript"}]
更新
非常感謝你妮可和nrabinowitz - 我已實現了以下的變化......在行動創造者
function transformDateFormat(json) {
const book = {
...json,
id: json.data._id,
// date: new Date(moment(json.data.date).format('yyyy-MM-dd'))
date: new Date(json.data.date)
}
console.log(book);
return book;
}
export function fetchBook(id) {
const request = axios.get(`/api/books/${id}`)
.then(transformDateFormat);
return {
type: FETCH_BOOK,
payload: request
}
};
我的記錄在轉換日期函數中加入了書對象,並且將id
和date
添加到對象的根,但json的結構實際上需要爲book.data.id
和book.data.date
。我不確定如何在transformDate函數內創建正確的結構以返回到動作創建者。
這是從轉換日期功能控制檯日誌簿對象:
Object {data: Object, status: 200, statusText: "OK", headers: Object, config: Object…}
config: Object
data: Object
__v:0
_id: "5749f1e0c373602b0e000001"
date: "2016-05-28T00:00:00.000Z"
name:"Eloquent JavaScript"
__proto__:Object
date: Sat May 28 2016 01:00:00 GMT+0100 (BST)
headers: Object
id: "5749f1e0c373602b0e000001"
request: XMLHttpRequest
status: 200
statusText: "OK"
__proto__: Object
我的函數需要放置的ID和日期的數據對象內。 (日期僅僅是標準的日期格式,什麼是錯的我的執行時刻(date: new Date(moment(json.data.date).format('yyyy-MM-dd'))
回報Invalid date
)再次
感謝您的幫助 - 真的很感激
'new Date(moment(json.data.date)。format('yyyy-MM-dd'))'應該是'moment(new Date(json.data.date)).format('yyyy-MM-dd')'。時刻非常靈活,你應該可以完全放棄'新日期'部分。 – nrabinowitz
感謝@nrabinowitz,試過這個,它是在操縱日期,但它是以'yyyy-06-Tue'出現的,而Redux窗體仍然不會加載日期值,就像其他值一樣。不知道現在該怎麼做 - 真正卡住了。 –