类型“{ children: Element; }”与类型“IntrinsicAttributes”不具有相同的属性

新手上路,请多包涵
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { AppStateProvider } from './AppState'

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <React.StrictMode>
    <AppStateProvider> // 这里报错   类型“{ children: Element; }”与类型“IntrinsicAttributes”不具有相同的属性
      <App />
    </AppStateProvider>
  </React.StrictMode>
);

reportWebVitals();



import React, {useState} from 'react'

interface AppStateValue {
  username: string,
  shoppingCart: {
    item: {id: number, name: string}[]
  }
}

const defaultContextCalue: AppStateValue = {
  username: '机器人',
  shoppingCart: {item: []}
}
export const appContext = React.createContext(defaultContextCalue)

export const AppStateProvider: React.FC = (props:any) => {
  const [state, setState] = useState(defaultContextCalue)
  return(
    <appContext.Provider value={state}>
      {props.children}
    </appContext.Provider>
  )
}

这里只是使用contextProvider组件的一个组件,react:18.2.0 ts:4.7.4

阅读 4.6k
1 个回答

React 18 版本开始,移除了React.FC类型中的children属性, 看 PR#56210,以及这篇文章 Removal of implicit children

可以改用React.PropsWithChildren类型

export const AppStateProvider = (props: React.PropsWithChildren) => {
  const [state, setState] = useState(defaultContextCalue);
  return (
    <appContext.Provider value={state}>{props.children}</appContext.Provider>
  );
};

stackblitz

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题