You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改react-timezone-select的onChange方法添加console.log打印

错误原因

react-timezone-select 的 onChange 回调会自动传入当前选中的时区对象作为参数,你之前的写法没有接收这个参数,直接将 state 中未更新的旧时区值重新赋值,所以导致组件选择功能失效。

正确实现

你只需要在自定义的 onChange 回调中接收选中的时区参数,先执行打印逻辑,再将参数传入 state 更新方法即可,修改后的核心代码如下:

<TimezoneSelect
  value={selectedTimezone}
  onChange={(newTimezone) => {
    // 自定义打印逻辑
    console.log('新选中的时区信息:', newTimezone)
    // 保持原有状态更新逻辑
    setSelectedTimezone(newTimezone)
  }}
/>

完整修改后的示例代码:

import React, { useState } from 'react'
import ReactDOM from 'react-dom'
import TimezoneSelect from 'react-timezone-select'

const App = () => {
  const [selectedTimezone, setSelectedTimezone] = useState({})

  return (
    <div className='App'>
      <h2>react-timezone-select</h2>
      <blockquote>Please make a selection</blockquote>
      <div className='select-wrapper'>
        <TimezoneSelect
          value={selectedTimezone}
          onChange={(newTimezone) => {
            console.log('新选中的时区信息:', newTimezone)
            setSelectedTimezone(newTimezone)
          }}
        />
      </div>
      <h3>Output:</h3>
      <div
        style={{
          backgroundColor: '#ccc',
          padding: '20px',
          margin: '20px auto',
          borderRadius: '5px',
          maxWidth: '600px',
        }}
      >
        <pre
          style={{
            margin: '0 20px',
            fontWeight: 500,
            fontFamily: 'monospace',
          }}
        >
          {JSON.stringify(selectedTimezone, null, 2)}
        </pre>
      </div>
    </div>
  )
}

const rootElement = document.getElementById('root')
ReactDOM.render(<App />, rootElement)

内容的提问来源于stack exchange,提问作者Hari Krishnan U

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 06:48:04