1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
動(dòng)態(tài)獲取dir取決于您的狀態(tài)管理方法(道具傳播、上下文、mobx、redux 等)。
這是一個(gè)簡(jiǎn)單的道具傳播方法的例子。
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
為了觀察父級(jí)的變化dir
(如果它是外部組件),您可以使用MutationObserver
來檢測(cè)道具的變化并相應(yīng)地更新狀態(tài)。
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();
}, []);
添加回答
舉報(bào)