1 回答
TA贡献1796条经验 获得超4个赞
动态获取dir取决于您的状态管理方法(道具传播、上下文、mobx、redux 等)。
这是一个简单的道具传播方法的例子。
function Slider({ dir }) {
return (
<div dir={dir}>
</div>
);
};
function App() {
const [dir, setDir] = useState("ltr");
return (
<Slider dir={dir} />
);
}
https://codesandbox.io/s/gallant-sammet-u553m?file=/src/App.js
为了观察父级的变化dir
(如果它是外部组件),您可以使用MutationObserver
来检测道具的变化并相应地更新状态。
const [direction, setDirection] = React.useState(document.body.dir);
React.useEffect(() => {
const observer = new MutationObserver((mutationsList, observer) => {
if (mutationsList.some((mutation) => mutation.attributeName === "dir")) {
setDirection(document.body.dir);
}
});
observer.observe(document.body, {
attributes: true
});
return () => observer.disconnect();
}, []);
添加回答
举报