滚动方向配置保存到本地存储
- 将滚动方向状态从RollClock提升到App组件统一管理
- 使用localStorage保存用户选择的滚动方向,键名为'clock-rollDirection'
- 默认值为向下滚动('down')
- 切换方向时自动保存到localStorage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a4979186a5
commit
9dae4a363e
14
src/App.tsx
14
src/App.tsx
@ -77,6 +77,11 @@ function App() {
|
|||||||
const saved = localStorage.getItem('clock-is24Hour')
|
const saved = localStorage.getItem('clock-is24Hour')
|
||||||
return saved === null ? true : saved === 'true'
|
return saved === null ? true : saved === 'true'
|
||||||
})
|
})
|
||||||
|
const [rollDirection, setRollDirection] = useState<'down' | 'up'>(() => {
|
||||||
|
// 从 localStorage 读取,默认向下滚动 ('down')
|
||||||
|
const saved = localStorage.getItem('clock-rollDirection')
|
||||||
|
return saved === 'up' ? 'up' : 'down'
|
||||||
|
})
|
||||||
|
|
||||||
// 切换格式时保存到 localStorage
|
// 切换格式时保存到 localStorage
|
||||||
const toggleFormat = () => {
|
const toggleFormat = () => {
|
||||||
@ -85,6 +90,13 @@ function App() {
|
|||||||
localStorage.setItem('clock-is24Hour', String(newValue))
|
localStorage.setItem('clock-is24Hour', String(newValue))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 切换滚动方向时保存到 localStorage
|
||||||
|
const toggleRollDirection = () => {
|
||||||
|
const newValue = rollDirection === 'down' ? 'up' : 'down'
|
||||||
|
setRollDirection(newValue)
|
||||||
|
localStorage.setItem('clock-rollDirection', newValue)
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const timer = setInterval(() => {
|
const timer = setInterval(() => {
|
||||||
setTime(new Date())
|
setTime(new Date())
|
||||||
@ -135,7 +147,7 @@ function App() {
|
|||||||
case 'flip':
|
case 'flip':
|
||||||
return <FlipClock time={timeString} size={clockSize} dateInfo={dateInfo} period={period} is24Hour={is24Hour} onToggleFormat={toggleFormat} />
|
return <FlipClock time={timeString} size={clockSize} dateInfo={dateInfo} period={period} is24Hour={is24Hour} onToggleFormat={toggleFormat} />
|
||||||
case 'roll':
|
case 'roll':
|
||||||
return <RollClock time={timeString} size={clockSize} dateInfo={dateInfo} period={period} is24Hour={is24Hour} onToggleFormat={toggleFormat} />
|
return <RollClock time={timeString} size={clockSize} dateInfo={dateInfo} period={period} is24Hour={is24Hour} onToggleFormat={toggleFormat} direction={rollDirection} onToggleDirection={toggleRollDirection} />
|
||||||
case 'digital':
|
case 'digital':
|
||||||
default:
|
default:
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
import { useState } from 'react';
|
|
||||||
import { RollDigit } from './RollDigit';
|
import { RollDigit } from './RollDigit';
|
||||||
import './RollClock.css';
|
import './RollClock.css';
|
||||||
|
|
||||||
@ -14,12 +13,11 @@ interface RollClockProps {
|
|||||||
period?: string;
|
period?: string;
|
||||||
is24Hour: boolean;
|
is24Hour: boolean;
|
||||||
onToggleFormat: () => void;
|
onToggleFormat: () => void;
|
||||||
|
direction: 'down' | 'up';
|
||||||
|
onToggleDirection: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function RollClock({ time, size, dateInfo, period, is24Hour, onToggleFormat }: RollClockProps) {
|
export function RollClock({ time, size, dateInfo, period, is24Hour, onToggleFormat, direction, onToggleDirection }: RollClockProps) {
|
||||||
// Roll direction: 'down' = roll down, 'up' = roll up
|
|
||||||
const [direction, setDirection] = useState<'down' | 'up'>('down');
|
|
||||||
|
|
||||||
// Parse time - it's already in 12h format when period is provided
|
// Parse time - it's already in 12h format when period is provided
|
||||||
const [hoursStr, minutes, seconds] = time.split(':');
|
const [hoursStr, minutes, seconds] = time.split(':');
|
||||||
const displayHours = hoursStr;
|
const displayHours = hoursStr;
|
||||||
@ -28,11 +26,6 @@ export function RollClock({ time, size, dateInfo, period, is24Hour, onToggleForm
|
|||||||
const periodSize = size * 0.20;
|
const periodSize = size * 0.20;
|
||||||
const dateSize = size * 0.20;
|
const dateSize = size * 0.20;
|
||||||
|
|
||||||
// Toggle direction
|
|
||||||
const toggleDirection = () => {
|
|
||||||
setDirection((prev) => (prev === 'down' ? 'up' : 'down'));
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="roll-clock-outer">
|
<div className="roll-clock-outer">
|
||||||
<div className="roll-clock-side-panel">
|
<div className="roll-clock-side-panel">
|
||||||
@ -113,7 +106,7 @@ export function RollClock({ time, size, dateInfo, period, is24Hour, onToggleForm
|
|||||||
borderRadius: `${buttonSize / 2}px`,
|
borderRadius: `${buttonSize / 2}px`,
|
||||||
marginLeft: '8px',
|
marginLeft: '8px',
|
||||||
}}
|
}}
|
||||||
onClick={toggleDirection}
|
onClick={onToggleDirection}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="roll-clock-button-text"
|
className="roll-clock-button-text"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user