【问题标题】:use-effect doesnt work, only after refresh page使用效果不起作用,只有在刷新页面后
【发布时间】:2020-08-04 15:38:33
【问题描述】:

我的 React 应用程序中的 useEffect 有问题。我尝试使用 useEffect 翻译输入中的占位符,这是我的代码:

const [age, setAge] = useState("");

  useEffect(() => {
    if (localStorage.myLanguage[7] == "p") {
      setAge("Translate One");
    } else {
      setAge("Translate Two");
    }
  });

这是我的输入:

<input
   onChange={handleChangeAge}
   value={titleAge}
   type="number"
   min="1"
   max="100"
   id="age"
   placeholder={age}
   name="age"
   required
></input>

这行得通,因为在本地存储中它会发生变化,但是如果我想在页面上看到更改,我必须刷新页面。当用户在选择器中切换语言后,我需要这个工作。 你能帮帮我吗?

【问题讨论】:

  • 你为什么不直接使用 react-int
  • 因为我想避免使用它并且我需要这个想法..它以前可以工作,但是当我更改某些内容时它会停止工作,当我回到这个版本时它会停止工作..我搜索解决方案..

标签: javascript reactjs local-storage use-effect


【解决方案1】:

试试这个:

  useEffect(() => {
if (localStorage.myLanguage[7] == "p") {
  setAge("Translate One");
} else {
  setAge("Translate Two");
}
  }, [localStorage.myLanguage]);

每次数组 localStorage.myLanguage 更改时都应该运行。让我知道它是否有效,因为我当然没有用你的代码尝试过。 如果它抛出一个错误,说明长度已更改,则执行以下操作:

[localStorage.myLanguage.join(',')]

【讨论】:

  • 它不起作用,是同样的问题,当我在选择器中选择语言时,不会更改占位符翻译。 :(
  • 这里什么时候调用useEffect?
猜你喜欢
  • 1970-01-01
  • 2016-08-15
  • 2014-08-23
  • 2020-02-15
  • 1970-01-01
  • 2019-02-20
  • 2011-11-30
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多