css 属性“will-change”使动画性能更好。但似乎它会在特殊情况下禁用 IOS 移动浏览器中的某些渲染。
以下代码在 IOS 移动浏览器中的行为:
- 点击“点我”,添加计数
length
; - 使用 new 渲染组件
length
; - “值”显示错误
length
,“相同值”显示正确length
。
“值”和“相同值”的区别在于css代码,我想可能是“will-change”触发IOS移动浏览器优化渲染html。“价值”中的正确length
已被优化。
所以请有人解释这个奇怪的问题。谢谢。
import { useState } from "react";
import "./styles.css";
export default function App() {
const [length, setLength] = useState(0);
const onClick = () => setLength(length + 1);
const list = Array.from({ length }).fill("");
const items = list.map(() => {
return <div className="item">placeholder</div>;
});
return (
<div className="container">
{ /* has css "will-change" */ }
<div className="create" onClick={onClick}>
Click me
</div>
{items}
{ /* has css "position: relative", "box-shadow" */ }
<div className="length"> value: {length}</div>
<div> same value: {length} </div>
</div>
);
}
.length {
position: relative;
box-shadow: 0 0 5px red;
}
.create {
will-change: transform;
}
.container {
font-size: 28px;
}