'use strict'; function MySelect(props) { const [selectValue, setSelectValue] = React.useState(props.initialValue); // push browser history React.useEffect(() => { console.log("pushState: "+selectValue); history.pushState({"a":selectValue, "b": 2}, "", "?a="+selectValue+"&b=2"); }, [selectValue]); // subscribe to popstate React.useEffect(() => { const handlePopState = () => { console.log("handlePopState, history.state.a: "+history.state.a); setSelectValue(history.state.a); } window.addEventListener("popstate", handlePopState); return () => { window.removeEventListener("popstate", handlePopState); } }); function handleSelectChange(event) { setSelectValue(event.target.value); } return (
select value is: {selectValue}
); } const domContainer = document.querySelector('#MySelect'); const options = window._selectOptions; const initialValue = window._selectInitialValue; ReactDOM.render(, domContainer);