Javascript 查询字符串更新中断设置状态

Javascript 查询字符串更新中断设置状态,javascript,reactjs,datepicker,setstate,Javascript,Reactjs,Datepicker,Setstate,当我从日期选择器中选择日期时,我正在更新我的url。要仅更新url中的日期查询,我正在执行历史记录。替换,要将所选值设置为我的状态,我正在执行设置状态。但我面临一个问题,我的url得到更新(只是我需要的查询),但状态不会得到更新。这是我的密码 handleStartDate = date => { this.setState({ startDate: date }); var month = date.get

当我从日期选择器中选择日期时,我正在更新我的url。要仅更新url中的日期查询,我正在执行
历史记录。替换
,要将所选值设置为我的状态,我正在执行
设置状态
。但我面临一个问题,我的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
,但我面临的唯一问题是state
startDate
无法使用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;
}