Я делаю календарь с moment()
, но у меня проблема с этим.
const {useState} = React;
const Calendar = () => {
const [value, setValue] = useState(moment());
function handleClick(date){
console.log('handleClick called', date);
setValue(date);
}
return (
<div>
<button onClick={()=> handleClick(value.add(-1,'month')) }> - </button>
<b>{ value.format('YYYY-MM') } </b>
<button onClick={()=> handleClick(value.add(1,'month')) }> + </button>
</div>
);
}
const App = () => (<Calendar />)
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root" />
когда я нажимаю кнопку, свойство, очевидно, обновляется, но повторного рендеринга не происходит.
Я догадываюсь, что это о shallow compare
, но я понятия не имею, как лучше всего решить эту проблему.
Заранее спасибо.