fix(frontend): resolve all eslint errors to zero (B1)
This commit is contained in:
@@ -19,10 +19,17 @@ function useFileText(url: string) {
|
||||
const [text, setText] = useState<string | null>(null);
|
||||
const [err, setErr] = useState("");
|
||||
const [nonce, setNonce] = useState(0);
|
||||
useEffect(() => {
|
||||
let dead = false;
|
||||
// url/nonce 变化时先落回加载态:React 官方推荐的「渲染期按下发 key 重置本地 state」,
|
||||
// 替代原先 effect 内的同步 setState(级联渲染);重试时的表现与原先一致
|
||||
const key = url + "#" + nonce;
|
||||
const [prevKey, setPrevKey] = useState(key);
|
||||
if (prevKey !== key) {
|
||||
setPrevKey(key);
|
||||
setText(null);
|
||||
setErr("");
|
||||
}
|
||||
useEffect(() => {
|
||||
let dead = false;
|
||||
apiRaw(url)
|
||||
.then((r) => r.arrayBuffer())
|
||||
.then((b) => !dead && setText(decodeText(b)))
|
||||
@@ -238,6 +245,7 @@ function TxtView({ book, initialLocator, initialPercent, chrome }: ReaderProps)
|
||||
const rawCh = Number(initialLocator?.ch);
|
||||
if (Number.isFinite(rawCh) && rawCh >= 0 && rawCh < chapters.length) {
|
||||
targetCi.current = Math.floor(rawCh);
|
||||
// eslint-disable-next-line react-hooks/set-state-in-effect -- 首章渲染后按缓存 locator 落位阅读进度;ci 与下方滚动定位 effect/refs 协作,改渲染期重置属高风险重构,保守保留
|
||||
setCi(Math.floor(rawCh));
|
||||
if (hasF) restoreFrac.current = f;
|
||||
} else if (hasF) {
|
||||
|
||||
Reference in New Issue
Block a user