Dav*_*ton 11 javascript reactjs
我收到此错误和两个警告:
不应为非交互式元素分配鼠标或键盘事件侦听器。
和
道具验证中缺少 video 和 onVideo 选择
import React from 'react';
const VideoListItem = ({ video, onVideoSelect }) => {
const imageUrl = video.snippet.thumbnails.default.url;
return (
<li onClick={() => onVideoSelect(video)} className="list-group-item">
<div className="video-list media">
<div className="media-left">
<img className="media-object" src={imageUrl} alt="Media" />
</div>
<div className="media-body">
<div className="media-heading">{video.snippet.title}</div>
</div>
</div>
</li>
);
};
export default VideoListItem;
Run Code Online (Sandbox Code Playgroud)
有人请以正确的方式帮助我纠正这些问题。
Pau*_*oze 11
第一个警告意味着,你不应该onClick在li元素上有事件监听器,只能在元素 like<a>或<button>element 上。
第二个警告是关于不使用 PropTypes 包 - 你应该验证你传递给你的组件的道具 - 它说明传递的道具应该是什么 - 在你的情况下video是一个对象,onVideoSelect是一个函数,对吧?您可以像这样使用https://www.npmjs.com/package/prop-types包:
import PropTypes from 'prop-types'; // or PropTypes = require('prop-types');
const VideoListItem = ({ video, onVideoSelect }) => {...};
VideoListItem.propTypes = {
video: PropTypes.object.isRequired,
onVideoSelect: PropTypes.func.isRequired,
};
Run Code Online (Sandbox Code Playgroud)
如果您省略isRequired,您将收到关于 props 没有默认值的警告(假设您使用的是 airbnb linter 配置 - 看起来像这样)。你可以像这样修复它:
VideoListItem.defaultProps = {
video: {},
onVideoSelect: () => {},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19578 次 |
| 最近记录: |