React Navigation的introduction page建议使用以下解构分配:
const { navigate } = this.props.navigation;
然而,当我在我的应用程序中实现React Navigation时,ESLint抱怨这一行描述了这两个错误:
道具验证(react / prop-types)中缺少'navigation'
道具验证(react / prop-types)中缺少'navigation.navigation'
即使应用程序似乎按预期工作,如何删除这些错误行?
答案 0 :(得分:11)
React.PropTypes
已移入prop-types
包。
应该使用它而不是从react-native
导入(可以通过npm install --save prop-types
或yarn add prop-types
将包添加到项目中。)
符合“组件应该写成纯函数”规则的示例代码如下:
// In addition to other imports:
import PropTypes from 'prop-types';
const LoginScreen = ({ navigation }) => (
<View>
<Button
title="Login"
onPress={() => navigation.navigate('MainScreen')}
/>
</View>
);
LoginScreen.propTypes = {
navigation: PropTypes.shape({
navigate: PropTypes.func.isRequired,
}).isRequired,
};
答案 1 :(得分:7)
今天的解决方案(因为对象Proptype不再被默认接受):
export default class LoginScreen extends Component {
static propTypes = {
navigation: PropTypes.shape({
navigate: PropTypes.func.isRequired,
}).isRequired,
}
}
答案 2 :(得分:6)
一种选择是将propTypes
道具添加到组件中。
示例强>
LoginScreen.propTypes = {
navigation: PropTypes.object.isRequired,
};
另一个选项是禁用该页面和规则的eslint。更多信息here
规则选项
此规则可以使用一个参数来忽略某些特定的道具 验证
... "react/prop-types": [<enabled>, { ignore: <ignore>, customValidators: <customValidator> }] ...
答案 3 :(得分:0)
在ES5中导航的情况下,请使用以下代码:
LoginScreen.propTypes = {
navigation: PropTypes.object.isRequired,
};
在ES6中使用此:
static PropTypes = {
navigation: PropTypes.object.isRequired,
};
和
import PropTypes from 'prop-types';
答案 4 :(得分:0)
当Project需要导航到几乎所有的组件网时。我们还可以使该特定道具的棉绒静音。
通过在eslint配置中添加以下内容:
@reboot sudo python /home/pi/UDP_Python_Omxplayer.py