here is my react hooks code:
function State(){
var [msg,set_msg]=React.useState("hello") //not rendered, just to force render
var [data,set_data]=React.useState({version:1})
function onClick(){
set_msg(x=>x+'x') //just to force render
data.version+=1 //changing state in place, but it still updates
}
return <div>
version={data.version}
<button {...{onClick}}>click</button>
</div>
}
ReactDOM.render(<State />,document.querySelector('#root') );
<div id="root"></div>
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel" src="index.js"></script>
<div id=root></root>
my question is: why does it work? the code does not set_data, just changes the version in place