小编Mr.*_*bot的帖子

JavaScript 函数和 React 钩子有什么区别?

我一直在研究编写自己的 React 钩子,但到目前为止,我一直在努力从技术层面说明普通 JavaScript 函数和钩子之间的区别。

例如,这篇文章说钩子是“普通的 JavaScript 函数,可以在其中使用其他钩子”,但在幕后还有什么?

我知道我们use在钩子名称中使用了这个词,但我很好奇钩子是什么使它们成为钩子而不是函数!

javascript reactjs react-hooks

16
推荐指数
1
解决办法
2828
查看次数

不变违规:Chrome 不支持在本机模块上调用同步方法

我已经分叉了这个 React 库以与 React Native 一起使用,并通过安装react-native-svguse-elapsed-time和 prop-types使其工作:

https://github.com/vydimitrov/react-countdown-circle-timer

但是我现在无法使用调试器:

不变违规:Chrome 不支持在本机模块上调用同步方法。

考虑提供替代方法以在调试模式下公开此方法,例如通过提前公开常量。

此错误位于:在 CountdownCircleTimer (at AppRoot.js:118) in AppRoot (at App.js:9) in Provider (at App.js:8) in App (at renderApplication.js:40) in RCTView (at AppContainer.js:101) 在 RCTView(在 AppContainer.js:119)

我已经搜索了高低有关哪个包可能导致错误的任何线索,我只能看到报告的与react-native-device-info 相关的问题,但这并没有导致问题。该错误意味着什么?如果有关它的信息如此之少,我该如何开始调试?

react-native

9
推荐指数
2
解决办法
3483
查看次数

如何在 React Dev Tools Profiler 中显示“为什么要渲染”

我正在阅读这篇关于分析 React 应用程序的文章:优化慢速 React 组件,在分析器中,您可以在工具提示和侧边栏中看到“为什么要渲染”:

在此输入图像描述

在此输入图像描述

在我的分析器中没有这样的信息。我正在使用最新版本的 React Native 调试器:

在此输入图像描述

我怎样才能看到/显示这些信息?

reactjs react-native-debugger

8
推荐指数
1
解决办法
4074
查看次数

如何导入 Ant Design React UI 库和 css?

我对 React 中的 UI 库和 CSS 非常陌生。我正在使用 Ant Design 的数据选择器: https: //ant.design/docs/react/introduce

他们提供了 CodePen 示例,在 CSS 选项卡中您可以看到:

@import 'antd/dist/antd.css';

但是,当我将其添加到我的 CSS 样式表(我使用它导入到组件中)时,import './Component.css';出现错误

找不到模块:无法解析“./antd/dist/antd.css”

在组件文件夹中。

我已经安装了 npm 包,但无法让 CSS 工作。

我究竟做错了什么?

css reactjs

6
推荐指数
1
解决办法
2万
查看次数

当 React Native Android 应用程序在后台或已被杀死时,如何将其带到前台?

当 React Native 应用程序在后台或已被杀死时,有什么方法可以将其带到前台吗?

我尝试过使用react-native-invoke-app,但它不再维护并且仅支持Android版本<9。

java android react-native

6
推荐指数
1
解决办法
3567
查看次数

如何使用react-native-paper主题设置禁用按钮的颜色?

react-native-paper文档建议您可以使用主题设置禁用按钮的颜色,但此代码不起作用:

export const buttonTheme = {
  colors: {
    primary: COL_BASE_YELLOW,
    disabled: COL_DARK_HIGHLIGHT,
  },
}

<Button
  loading={submittedPhoneNumber ? true : false}
  mode="contained"
  onPress={() => handleSubmitPhoneNumber(phoneNumber)}
  theme={buttonTheme}
  disabled={phoneNumber.length < 5 ? true : false}>
  Continue
</Button>
Run Code Online (Sandbox Code Playgroud)

然而,颜色primary有效。当按钮被禁用时如何更改按钮的颜色?

material-design react-native react-native-paper

6
推荐指数
1
解决办法
1万
查看次数

如何重构要从 React Native 调用的原生 Android Java 方法?

我目前有以下活动,它是在我的应用程序启动时创建的,并在我的 AndroidManifest.xml 中声明为活动:

AndroidManifest.xml:

<activity android:name=".IncomingActivity"></activity>
Run Code Online (Sandbox Code Playgroud)

传入Activity.java:

package com.xyz;

import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;

public class IncomingActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
            setShowWhenLocked(true);
            setTurnScreenOn(true);
        }
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

        setContentView(R.layout.activity_incoming);
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在希望能够从 React Native 按需使用此功能。到目前为止,我已经像下面这样重构了它,但是当调用这个本机方法时,我只是得到一个空白的白屏,我认为问题出在这一行:activity.setContentView(mReactRootView);

更新类:

public class UnlockDevice extends ReactContextBaseJavaModule {

    @Override
    public String getName() {
        return "UnlockDevice";
    }

        private ReactContext mReactContext;
        private ReactRootView mReactRootView;

    public UnlockDevice(ReactApplicationContext reactContext) { …
Run Code Online (Sandbox Code Playgroud)

java android react-native react-native-android

6
推荐指数
1
解决办法
230
查看次数

Android React Native 应用程序在 Android Studio 中构建,但不使用 React Native CLI

我能够使用RunAndroid Studio构建我的应用程序,但是使用我更喜欢的 React Native CLI,该应用程序不会使用该react-native run-android命令构建。

使用 React Native CLI,我收到错误消息:

Execution failed for task ':app:packageDebug'.
> react_9eow0duexig9bim4oxa9fkqs2$_run_closure4$_closure6$_closure10$_closure18
Run Code Online (Sandbox Code Playgroud)

有很多关于引用错误的第一行的在线帖子,其中没有一个解决方案可以修复构建,但是在搜索第二行时实际上没有谷歌结果。

当 React Native CLI 不能时,为什么 Android Studio 能够构建应用程序?

我正在使用 RN v 0.61.4

非常感谢任何帮助。

android-studio react-native

5
推荐指数
0
解决办法
114
查看次数

如何导入这个 Ant Design TypeScript 界面?

我有这个 TypeScript 错误:

类型“xyz”不可分配给类型“TableComponents”。

所以我需要将我的类型转换为 TableComponents。但是当我尝试使用以下方式导入它时,该接口不可用:

import { TableComponents } from 'antd/lib/table/interface';
Run Code Online (Sandbox Code Playgroud)

该接口在此处列为库的一部分。

如何将其导入到我的 React 项目中?

typescript reactjs ant-design-pro

5
推荐指数
1
解决办法
1961
查看次数

通过 CDN 使用但不通过 npm pakcage 使用时,Leaflet 渲染 Windy 地图

我正在通过 CDN 在 React 中使用带有Windy 的Leaflet,效果很好:

在 index.js 中:

<script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
<script src="https://api.windy.com/assets/map-forecast/libBoot.js"></script>
Run Code Online (Sandbox Code Playgroud)

反应组件:

export const renderMap = (): void => {
    const options = {
        key: 'xyz',
        lat: 41.3,
        lon: 2.1,
        zoom: 10,
    };
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    (window as any).windyInit(options, (windyAPI: any) => {
        const { map } = windyAPI;
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        (window as any).L.popup()
            .setLatLng([41.3, 2.1])
            .setContent(':)')
            .openOn(map);
    });
};
Run Code Online (Sandbox Code Playgroud)

但是我希望能够使用传单 npm 包,而不是 CDN。当我导入包时,它被定义但 Windy 抛出错误:

libBoot.js:3 Leaflet 库丢失

在 index.js 中:

<script src="https://api.windy.com/assets/map-forecast/libBoot.js"></script> …
Run Code Online (Sandbox Code Playgroud)

javascript leaflet reactjs

5
推荐指数
1
解决办法
297
查看次数