useRTL

Supports server-side rendering
Doesn't require page refresh


Usage

import { useRTL } from "reshaped";

Browsers display text using the left-to-right (LTR) direction by default. However, some languages, like Arabic or Hebrew, use right-to-left direction (RTL). This means that the text direction should change along with the CSS properties like margin-left, padding-left etc.

useRTL helps you detect which direction is currently used and switch between them.

function Component() {
const [rtl, setRTL] = useRTL();
return (
<View gap={3}>
Is RTL on? {rtl}
<MenuItem roundedCorners onClick={() => setRTL(false)}>
English
</MenuItem>
<MenuItem roundedCorners onClick={() => setRTL(true)}>
Hebrew
</MenuItem>
</View>
);
}

Content direction is a value applicable to the whole application, so its default value can be set using Reshaped provider.

<Reshaped defaultRTL={true} />

To support the default RTL value with server-side rendering, pass the value to the dir attribute to the body element.

<body dir="rtl">

Arguments and return value

() => [rtl: boolean, setRTL: (value: boolean) => {}]