Javascript 不变冲突:登录页上的元素类型无效
所以我是reactnative的新手,目前我正在用reactnative创建一个登录页面,我在我的应用程序中得到了这个 不变冲突:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。 检查“按钮”的渲染方法 这是App.js的Javascript 不变冲突:登录页上的元素类型无效,javascript,reactjs,react-native,Javascript,Reactjs,React Native,所以我是reactnative的新手,目前我正在用reactnative创建一个登录页面,我在我的应用程序中得到了这个 不变冲突:元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但未定义。您可能忘记了从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。 检查“按钮”的渲染方法 这是App.js的 import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; imp
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import * as firebase from 'firebase';
import { Input } from './components/Input';
import { Button } from './components/Button';
export default class App extends React.Component {
state = {
email: '',
password: ''
}
render() {
return (
<View style={styles.container}>
<Input
placeholder='Enter your mail...'
label='Email'
onChangeText={email => this.setState({email})}
value={this.state.email}
/>
<Input
placeholder='Enter your password'
label='Password'
secureTextEntry
onChangeText={password => this.setState({password})}
value={this.state.password}
/>
<Button onPress={() => console.log('pressed')}>Log In</Button>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20
},
});
从“React”导入React;
从“react native”导入{样式表、文本、视图};
从“firebase”导入*作为firebase;
从“./components/Input”导入{Input};
从“./components/Button”导入{Button};
导出默认类App扩展React.Component{
状态={
电子邮件:“”,
密码:“”
}
render(){
返回(
this.setState({email})}
值={this.state.email}
/>
this.setState({password})}
值={this.state.password}
/>
console.log('pressed')}>登录
);
}
}
const styles=StyleSheet.create({
容器:{
弹性:1,
填充:20
},
});
这是Button.js
从“React”导入React;
从“react native”导入{样式表,文本,TouchableOpacty};
常量按钮=({onPress,children})=>{
返回(
{儿童}
)
}
const styles=StyleSheet.create({
按钮:{
玛金托普:10,
填充:20,
宽度:“100%”,
背景颜色:“#00aeef”,
边界半径:4,
对齐项目:“居中”,
},
正文:{
颜色:'白色',
重量:'700',
尺码:18,
}
});
导出{按钮};
知道我的应用程序为什么会发生这种情况吗?
谢谢
更新:我遵循下面的解决方案,它提出了另一个解决方案
任何解决方案在您的Button.js中,您应该写:
export default Button;
您的输入应该是:
import Button from './components/Button';
而不是:
export { Button };
在这种情况下,最好使用
导出默认按钮
代码的问题是在按钮.js中导入触摸不透明度
时。它应该是可触摸的不透明度不,不是problem@FidriyantoRizkillah:您可以参考此小吃:无默认值导出和使用braces@FidriyantoRizkillah:不确定你的代码为什么工作是相当危险的,只是一条建议。玩得开心@伊萨克:当然可以,但从问题中的例子来看,“Button.js”文件应该只导出一个按钮,这就是为什么我在问题末尾说“在这个上下文中”。@Pintouch:但OP说他遇到了异常,而你建议的答案可以解决这个问题,对吗?或者你给出的答案是最佳实践?因为你是对的,导出默认值
在这种情况下更好,但我怀疑是否解决了真正的问题我认为导入是问题所在,但这也纠正了我的代码谢谢先生
export { Button };