【问题标题】:how to fix currentlyFocusedField is deprecated and will be removed in a future release. Use currentlyFocusedInput如何修复 currentFocusedField 已弃用,将在未来版本中删除。使用 currentFocusedInput
【发布时间】:2020-07-15 16:42:41
【问题描述】:

我使用 react native 和 react-native-router-flux 进行导航

当我想移动屏幕时,出现错误“currentlyFocusedField is deprecated and will be removed in a future release. Use currentFocusedInput”

但屏幕仍因错误而移动

如何解决

这是我的路由器

    import 'react-native-gesture-handler';

import React, { Component } from 'react';
import {
    Router,
    Scene,
    Stack,
} from 'react-native-router-flux';

import Loading from '../screens/Loading';
import Welcome from '../screens/Welcome';
import Register from '../screens/Auth/Register';

export default class RouterLinked extends Component {
    render() {
        return (
            <Router>
                <Stack key="root" type="replace">
                    <Scene key="Welcome" component={Welcome} initial={true} hideNavBar={true}/>
                    <Scene key="Register" component={Register} title="Register" />
                    <Scene key="Loading" component={Loading} />
                </Stack>
            </Router>
        );
    }
}

这是我的主页

import React, { Component } from 'react';
import { View, Button, Text } from 'react-native';

import { Actions } from 'react-native-router-flux';

export default class Welcome extends Component {
    render() {

        return(
            <View>
                <Text>Welcome</Text>
                <Button 
                    title="Click"
                    onPress={() => Actions.push('Register')}
                />
            </View>
        );
    }
}

【问题讨论】:

  • 升级你的依赖可能会修复这个错误。
  • 对不起,它不起作用
  • 你用的是什么版本的 react-native-router-flux,能告诉你package.json吗?
  • "dependencies": { "@react-native-community/masked-view": "^0.1.10", "react": "16.13.1", "react-native": " 0.63.1”、“react-native-gesture-handler”:“^1.6.1”、“react-native-reanimated”:“^1.9.0”、“react-native-router-flux”:“^4.2 .0", "react-native-safe-area-context": "^3.1.1", "react-native-screens": "^2.9.0" },
  • 它是我的依赖项

标签: reactjs react-native react-native-router-flux


【解决方案1】:

我也有同样的问题。我通过以下步骤解决了这个问题。

  1. 首先从@react-navigation 包的node_modules 文件夹中找到此文件。

  1. 将所有currentlyFocusedField() 替换为currentlyFocusedInput()

  2. 重新加载您的应用程序。

就是这样。 谢谢。

【讨论】:

  • 所以是的,这可以解决它,但您通常不想在 node_modules 内进行更改。这不应该被提交,任何重新安装模块都将撤消此更改。
  • @mrmicrowaveoven 作为一种解决方法,您可以在安装库时使用patch-package 更新 node_modules。 npmjs.com/package/patch-package。当然,这只是临时修复。
  • 请注意,这取决于您的 react-navigation 版本。在非常旧的版本(2.x.x)中,您会在 react-navigation/src/navigators/createKeyboardAwareNavigator 中找到它
【解决方案2】:

这是一个与 react-navigation 包相关的问题

修复可能只需要查找并替换 currentlyFocusedField 的所有实例为 currentlyFocusedInput

这可能已通过此提交修复: Github commit 虽然我最后仍然得到错误。

【讨论】:

    【解决方案3】:

    我添加了以下插件并修复了它。

      "@react-navigation/core": "^5.13.1",
        "@react-navigation/native": "^5.8.1",
        "@react-navigation/stack": "^5.11.0",
    

    【讨论】:

      【解决方案4】:

      我们可以使用patch-package来更新node_modules/@react-navigation/native

      1. 编辑“node_modules/@react-navigation/native/src/createKeyboardAwareNavigator.js”:

        查找此代码的匹配项:TextInput.State.currentlyFocusedField();

        并替换为:TextInput.State.currentlyFocusedInput ? TextInput.State.currentlyFocusedInput() : TextInput.State.currentlyFocusedField();

      2. 运行npx patch-package

      3. 运行npm i patch-package

      4. 添加到您的 package.json 脚本中:

      "scripts": {
        "postinstall": "patch-package"
       }
      

      考虑在升级到 react-navigation@4.4.1 https://github.com/react-navigation/react-navigation/issues/8457#issuecomment-698464510 后丢弃这个补丁

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-07
        • 2019-02-28
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多