使用 create-react-app 创建应用程序后,数组中的元素缺少 "key" 道具
Missing "key" prop for element in array after creating app with create-react-app
我目前正在使用 create-react-app 创建一个新的 React 应用程序。之后,我安装了扩展插件的 eslint:react/recommended 和 google。 2 周前我做了同样的事情,我没有遇到任何问题,但是从 2 天开始,我的 index.tsx 和 App.tsx 文件中的每个 html行。
index.tsx
import './index.css';
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';
ReactDOM.render(
<React.StrictMode>
<App /> <!-- Here I get a missing key prop error -->
</React.StrictMode>,
document.getElementById('root'),
);
App.tsx
import './App.css';
import React from 'react';
import logo from './logo.svg';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
在 App.tsx 中,我在 <div className="App"></div>
中的所有行上都收到了丢失的关键道具错误
我不知道为什么会收到此错误,但是从 .eslintrc.yml 中删除 plugin:react/recommended
会删除错误。可能是因为在该规则集中应用了 react/jsx-key 规则。
我也尝试删除 eslintConfig
块 frmo package.json
额外信息
版本
- 节点:16.14.0
- Npm: 8.5.2
package.json
{
...
"dependencies": {
"@testing-library/jest-dom": "^5.16.2",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.4.1",
"@types/node": "^16.11.26",
"@types/react": "^17.0.39",
"@types/react-dom": "^17.0.11",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
"typescript": "^4.5.5",
"web-vitals": "^2.1.4"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.12.1",
"@typescript-eslint/parser": "^5.12.1",
"eslint": "^8.9.0",
"eslint-config-google": "^0.14.0",
"eslint-plugin-react": "^7.29.0"
}
}
.eslintrc.yml
env:
browser: true
es2021: true
extends:
- plugin:react/recommended
- google
parser: '@typescript-eslint/parser'
parserOptions:
ecmaFeatures:
jsx: true
ecmaVersion: latest
sourceType: module
plugins:
- react
- '@typescript-eslint'
rules: {
require-jsdoc: 0
}
知道这里发生了什么以及如何解决这个问题。
我目前正在使用 create-react-app 创建一个新的 React 应用程序。之后,我安装了扩展插件的 eslint:react/recommended 和 google。 2 周前我做了同样的事情,我没有遇到任何问题,但是从 2 天开始,我的 index.tsx 和 App.tsx 文件中的每个 html行。
index.tsx
import './index.css';
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';
ReactDOM.render(
<React.StrictMode>
<App /> <!-- Here I get a missing key prop error -->
</React.StrictMode>,
document.getElementById('root'),
);
App.tsx
import './App.css';
import React from 'react';
import logo from './logo.svg';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
在 App.tsx 中,我在 <div className="App"></div>
我不知道为什么会收到此错误,但是从 .eslintrc.yml 中删除 plugin:react/recommended
会删除错误。可能是因为在该规则集中应用了 react/jsx-key 规则。
我也尝试删除 eslintConfig
块 frmo package.json
额外信息
版本
- 节点:16.14.0
- Npm: 8.5.2
package.json
{
...
"dependencies": {
"@testing-library/jest-dom": "^5.16.2",
"@testing-library/react": "^12.1.3",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.4.1",
"@types/node": "^16.11.26",
"@types/react": "^17.0.39",
"@types/react-dom": "^17.0.11",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
"typescript": "^4.5.5",
"web-vitals": "^2.1.4"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.12.1",
"@typescript-eslint/parser": "^5.12.1",
"eslint": "^8.9.0",
"eslint-config-google": "^0.14.0",
"eslint-plugin-react": "^7.29.0"
}
}
.eslintrc.yml
env:
browser: true
es2021: true
extends:
- plugin:react/recommended
- google
parser: '@typescript-eslint/parser'
parserOptions:
ecmaFeatures:
jsx: true
ecmaVersion: latest
sourceType: module
plugins:
- react
- '@typescript-eslint'
rules: {
require-jsdoc: 0
}
知道这里发生了什么以及如何解决这个问题。