javascript - TextInput 上的 RTL 适用于所有其他渲染

标签 javascript reactjs material-ui right-to-left

我对 RTL 有一个奇怪的问题,似乎所有内容都正确翻转,除了 TextInput - 它在大约 50% 的时间内工作。这是我在英语和希伯来语之间切换语言时显示问题的 gif:

(点击查看大图)

这是我的树包裹的主题组件。

import React, {useContext} from 'react'
import {create} from 'jss'
import jssRtl from 'jss-rtl'
import JssProvider from 'react-jss/lib/JssProvider'
import {
  createGenerateClassName,
  jssPreset,
  MuiThemeProvider,
  createMuiTheme
} from '@material-ui/core/styles'
import CssBaseline from '@material-ui/core/CssBaseline'
import {UserContext} from 'src/context/user.js'

const generateClassName = createGenerateClassName()
const plugins = [...jssPreset().plugins]
const dir = locale => {
  const base = locale.split('-') || []
  return ['he', 'ar'].includes(base[0]) ? 'rtl' : 'ltr'
}

const setDir = dir => {
  window.document &&
    window.document.getElementsByTagName('body')[0].setAttribute('dir', dir)
}

export default function Theme({children}) {
  const {locale} = useContext(UserContext)
  const direction = dir(locale)
  const theme = createMuiTheme({direction, useNextVariants: true})
  if (direction === 'rtl') plugins.push(jssRtl())
  setDir(direction)
  console.log('theme', {locale, direction})

  return (
    <MuiThemeProvider theme={theme}>
      <CssBaseline />
      {direction === 'rtl' ? (
        <JssProvider
          jss={create({plugins})}
          generateClassName={generateClassName}
        >
          {children}
        </JssProvider>
      ) : (
        children
      )}
    </MuiThemeProvider>
  )
}

最佳答案

大胆猜测:尝试添加一次 jssRtl pugin。您要在 Theme 组件的每个渲染器上添加 jssRtl 插件。这可能解释了它不会在 50% 的时间内工作,因为每个偶数渲染都意味着翻转两次,这相当于不翻转。

关于javascript - TextInput 上的 RTL 适用于所有其他渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53174897/

相关文章:

javascript - 日期范围选择器 - 显示日历

javascript - 如何使用 javascript 将 svg use 元素插入到 svg 组中?

material-ui - 使用 Material ui 图标导入动态图标

javascript - TableRow Material-UI 之间的间距

javascript - ES6如何在类中创建私有(private)变量和方法?

javascript - noscript 标签内的文本将作为文本而不是表单输出

reactjs - 对多个元素使用一个 useRef

javascript - 如何将 typescript 文件导入脚本标签

javascript - 为什么不显示在 react ?

css - React 和 MUI - 我的点击按钮动画没有像我想要的那样工作