如何在 React 中正确地将日期参数发送到 axios
How to properly send date param to axios in React
我想将日期作为参数发送给 axios 服务,但是当我发送时它变成了
messageStartDate=2021-12-21T11%3A47%3A54.810Z&messageEndDate=2021-12-21T11%3A47%3A59.718Z
我想以 ISO 格式发送,但有 %-A 和其他一些东西。我该如何解决它。
这就是我在 redux 中存储日期的方式。
const params = new URLSearchParams();
if (MessageDateStartValueRedux !== null)
params.append('messageStartDate',new Date(MessageDateStartValueRedux).toISOString());
if (MessageDateEndValueRedux !==null)
params.append('messageEndDate',new Date(MessageDateEndValueRedux).toISOString());
if (ValueDateStartValueRedux !== null)
params.append('valueStartDate',new Date(ValueDateStartValueRedux).toISOString());
if (MessageDateEndValueRedux !== null)
params.append('valueEndDate',new Date(MessageDateEndValueRedux).toISOString());
dispatch(setUrlParamsReducer(params));
这就是我的使用方式
const getQueryString = () => `${DEFAULT_URL}?page=${currentPage}&size=${pageSize}`+status;
const param = useSelector(state => state.urlParamsReducer);
console.log(param.toString());
const loadData = () => {
const queryString = getQueryString();
if ((queryString !== lastQuery || param.toString() !== lastParam.toString()) && !loading) {
axios.get(queryString, {params: param})
.then((response) => {
setRows(response.data.data);
setTotalCount(response.data.totalCount);
}).catch(() => setLoading(false));
}
}
useEffect(() => loadData(), [param,getQueryString()]);
%3a 是 ':' 字符的 url 编码。解码后的url是
messageStartDate=2021-12-21T11:47:54.810Z&messageEndDate=2021-12-21T11:47:59.718Z
符合预期
我想将日期作为参数发送给 axios 服务,但是当我发送时它变成了
messageStartDate=2021-12-21T11%3A47%3A54.810Z&messageEndDate=2021-12-21T11%3A47%3A59.718Z
我想以 ISO 格式发送,但有 %-A 和其他一些东西。我该如何解决它。
这就是我在 redux 中存储日期的方式。
const params = new URLSearchParams();
if (MessageDateStartValueRedux !== null)
params.append('messageStartDate',new Date(MessageDateStartValueRedux).toISOString());
if (MessageDateEndValueRedux !==null)
params.append('messageEndDate',new Date(MessageDateEndValueRedux).toISOString());
if (ValueDateStartValueRedux !== null)
params.append('valueStartDate',new Date(ValueDateStartValueRedux).toISOString());
if (MessageDateEndValueRedux !== null)
params.append('valueEndDate',new Date(MessageDateEndValueRedux).toISOString());
dispatch(setUrlParamsReducer(params));
这就是我的使用方式
const getQueryString = () => `${DEFAULT_URL}?page=${currentPage}&size=${pageSize}`+status;
const param = useSelector(state => state.urlParamsReducer);
console.log(param.toString());
const loadData = () => {
const queryString = getQueryString();
if ((queryString !== lastQuery || param.toString() !== lastParam.toString()) && !loading) {
axios.get(queryString, {params: param})
.then((response) => {
setRows(response.data.data);
setTotalCount(response.data.totalCount);
}).catch(() => setLoading(false));
}
}
useEffect(() => loadData(), [param,getQueryString()]);
%3a 是 ':' 字符的 url 编码。解码后的url是
messageStartDate=2021-12-21T11:47:54.810Z&messageEndDate=2021-12-21T11:47:59.718Z
符合预期