无法使用 React 从 URL 将 id 设置为我的状态?

Can't set the id to my state from URL using React?

我在为我的 state.id 设置正确的 ID 时遇到问题 当组件第一次出现时,我试图在 componentWillMount 方法中影响 idea 的值,但出现错误,

class Contrat extends Component {
    state = {
        idContrat: 4000003,
    };

    componentWillMount() {
        const urlString = window.location.href;
        const url = new URL(urlString);
        const contratId = url.searchParams.get("contratId");
        if (contratId !== null && contratId.length !== 0) {
             this.props.getDetailsContrat(contratId);
        }
        this.setState({idContrat: contratId});
    }
    render(){
        return <div>{this.state.idContrat}</div>;
    }
}

然后我尝试了这个:

class Contrat extends Component {
    state = {
        idContrat: new URL(window.location.href).searchParams.get("contratId");,
    };

    componentWillMount() {
        const urlString = window.location.href;
        const url = new URL(urlString);
        const contratId = url.searchParams.get("contratId");
        if (contratId !== null && contratId.length !== 0) {
             this.props.getDetailsContrat(contratId);
        }
    }
    render(){
        return <div>{this.state.idContrat}</div>;
    }
}

但我再次收到错误消息,提示 URL 未定义。

有没有合适的方法来完成这样的任务?任何帮助将不胜感激。

You're using componentWillMount and upto that point you don't have access to window object.

你可以在componentDidMount中完成

componentDidMount(){
        const urlString = window.location.href;
        const url = new URL(urlString);
        const contratId = url.searchParams.get("contratId");
        if (contratId !== null && contratId.length !== 0) {
             this.props.getDetailsContrat(contratId);
        }
    }

旁注:- React 添加 componentWillMount 在不安全列表中,它将在即将发布的版本中弃用。文档建议改用 componentDidMount