我在我的react-native项目的chrome控制台中收到此警告消息。你知道我为什么要得到这个吗?
这是完整的消息:
需要周期:node_modules / react-native-radio-buttons / lib / index.js-> node_modules / react-native-radio-buttons / lib / segmented-controls.js-> node_modules / react-native-radio-buttons / lib / index.js
允许使用要求周期,但可能导致未初始化的值。 考虑重构以消除循环的需要。
我很感谢任何建议。 谢谢
答案 0 :(得分:6)
您可能正在将某些内容从“文件A”导入“文件B”,然后再次将某些内容从“文件B”导入“文件A”。 检查两个文件中的所有导入,看看是否有这样的循环。
答案 1 :(得分:6)
为了避免不得不写多行
import SomeComponent from "../components"
import AnotherComponent from "../components"
import AndAnotherComponent from "../components"
import AndOneMoreComponent from "../components"
我创建了一个comp.js文件,可以在其中导入创建时的组件并将其导出为模块。 这样一来,就可以到达所有组件。 这样您就可以在某个地方拥有类似的东西了……
import { SomeComponent, AnotherComponent, AndAnotherComponent, AndOneMoreComponent} from './comp'
现在,例如在渲染SomeComponent时,渲染器中会发生什么...。
import * as React from "react";
import { AnotherComponent} from '../comps';
import { View, Text } from "react-native";
function SomeComponent() {
return (
<>
<AnotherComponent />
<View><Text>EXAMPLE OF SOMECOMPONENT</Text></View>
</>
)
}
export default SomeComponent;
在该示例中,可以在主应用程序中调用SomeComponent,并且在呈现时它还会从comp.js中请求一个组件 之所以触发Require周期警告,是因为从一个位置导入的模块正在渲染,并要求从其渲染所在的位置导入另一个模块。
您对此有何想法,我应该回到使用单个导入语句还是您认为使用模块导出功能(由于当前已设置)存在危险吗?
答案 2 :(得分:3)
添加到@Peter答案如果要从同一索引文件导入,请尝试单独导入。
答案 3 :(得分:1)
我的情况是,我在本机反应中也遇到了同样的问题。
我做了什么?
我已经像下面那样使用react-navigation
export const containerRef = createRef();
function App(){
return (
<NavigationContainer ref={containerRef}>
....
<NavigationContainer>
);
}
然后我像这样食用它:
import {containerRef} from 'filename';
onPress = ()=> containerRef.current.navigate('Chat');
但是我如下更新,警告消失了。
function App(){
return (
<NavigationContainer> // removed ref
....
<NavigationContainer>
);
}
然后我像这样食用它:
import { useNavigation } from '@react-navigation/native';
onPress = ()=> useNavigation.navigate('Chat');
答案 4 :(得分:1)
我在项目中使用了 react-native-maps
,但遇到了同样的错误。
刚刚从 0.27.1 -> 0.28.0 升级。
我可以确认此问题已修复。
谢谢
答案 5 :(得分:0)
您在代码中使用了模块A,该模块导入(可能通过其他模块)模块B,而模块B又又导入了(也许通过其他模块)模块A。这是一个鸡蛋问题,因为任何一个都必须是第一个被加载的,另一个将在首次导入时未定义。
因此解决进口中的鸡肉问题,警告将消失。
答案 6 :(得分:0)
就我而言,警告是这样的
需要周期:src \ views \ TeamVerification.js-> src \ components \ TeamVerificationListItem.js-> src \ views \ TeamVerification.js允许使用要求周期,但可能会导致未初始化的值。考虑重构以消除循环的需要。
如前所述,TeamVerification正在导入TeamVerificationListItem,TeamVerificationListItem也正在导入TeamVerification。这是一个未使用的导入,但是在我删除它之后,警告消失了。
答案 7 :(得分:0)
请检查您是否在该文件中导入了相同的详细信息。 (即)
您的文件作为actions / meals.js,并且已将行添加到了相同的文件中,例如
import { Something } from './actions/meals.js'
答案 8 :(得分:0)
就我而言,安装“软件包”后,我也有同样的警告
在他们的文档中为import SomeFunc from 'package'
警告立即出现
允许使用要求周期,但可能导致未初始化的值。考虑重构以消除循环的需要。
但是一旦我破坏了SomeFunc
,就再也没有警告
import {SomeFunc} from 'package'
答案 9 :(得分:0)
如果某些导入是通过require
关键字完成的,则会引发此警告。将这些替换为import
语句,您将很高兴。例如,
const abc = require("example"); // Don't use this syntax
import abc from "example" // Use this syntax instead
注意:这可能因项目而异。要了解对require vs import的详细了解,请参阅this link。
答案 10 :(得分:-1)
如果在 @react-navigation/native
中使用 NavigationContainerimport {createRef} from 'react';
<NavigationContainer ref={createRef()}>