Javascript 查询字符串更新中断设置状态
当我从日期选择器中选择日期时,我正在更新我的url。要仅更新url中的日期查询,我正在执行Javascript 查询字符串更新中断设置状态,javascript,reactjs,datepicker,setstate,Javascript,Reactjs,Datepicker,Setstate,当我从日期选择器中选择日期时,我正在更新我的url。要仅更新url中的日期查询,我正在执行历史记录。替换,要将所选值设置为我的状态,我正在执行设置状态。但我面临一个问题,我的url得到更新(只是我需要的查询),但状态不会得到更新。这是我的密码 handleStartDate = date => { this.setState({ startDate: date }); var month = date.get
历史记录。替换
,要将所选值设置为我的状态,我正在执行设置状态
。但我面临一个问题,我的url得到更新(只是我需要的查询),但状态不会得到更新。这是我的密码
handleStartDate = date => {
this.setState({
startDate: date
});
var month = date.getUTCMonth() + 1; //months from 1-12
var day = date.getUTCDate();
var year = date.getUTCFullYear();
var newsStartDate = year + "/" + month + "/" + day;
const query = new URLSearchParams(this.props.history.location.search);
query.set("filterInitDate", newsStartDate);
this.props.history.replace({
search: query.toString()
});
};
我的网址如下
http://localhost:3000/transactions?page=1&limit=15&filter=%27%27&filterInitDate=2019%2F11%2F2&filterEndDate=2019%2F11%2F18
我可以使用此函数更新filterInitDate
,但我面临的唯一问题是statestartDate
无法使用setState更新。这是什么原因呢
我的约会选择者
<DatePicker
className="form-control"
customInput={<ExampleCustomInput pickerType="from" />}
selected={this.state.startDate}
onChange={this.handleStartDate}
adjustDateOnChange
dateFormat="dd / MM / yyyy"
/>
然后用setState更新您的状态
如果您的组件是第一次渲染,请将默认值从queryParam传递到state
function updateQueryStringParameter(uri, key, value) {
let re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
let separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re))
return uri.replace(re, '$1' + key + "=" + value + '$2');
else
return uri + separator + key + "=" + value;
}
如果没有例子,你很难知道你的情况发生了什么。是否可以与本期杂志共享一些repl/沙盒?为什么要修改
此.props.history
?您正在尝试更新状态吗?我正在调用componentDidMount上的API。我从url获取参数值。所以我需要更新我的url,为此我正在使用history.updateb但是props.history
comming from在哪里?它是一个有方法的对象吗?你能分享一下你的状态吗?
var newSearchParams = updateQueryStringParameter(props.history.location.search, "timeStart", startDate);
props.history.push(newSearchParams);
function updateQueryStringParameter(uri, key, value) {
let re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
let separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re))
return uri.replace(re, '$1' + key + "=" + value + '$2');
else
return uri + separator + key + "=" + value;
}