React-Aria开发报错:AriaCheckboxGroupProps不存在children属性求解决
问题
基于React-Aria开发CheckboxGroup组件时,复制官方文档代码后触发TypeScript错误:Property 'children' does not exist on type 'AriaCheckboxGroupProps',报错标记在CheckboxGroupContext.Provider所在行(实际原因是解构props.children时类型不兼容)。
组件代码如下:
import './CheckboxGroup.sass'; import { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria'; import { useCheckboxGroupState } from 'react-stately'; import { createContext } from 'react'; let CheckboxGroupContext = createContext(null); function CheckboxGroup(props) { let { children, label, description, errorMessage } = props; let state = useCheckboxGroupState(props); let { groupProps, labelProps, descriptionProps, errorMessageProps } = useCheckboxGroup(props, state); return ( <div {...groupProps}> <span {...labelProps}>{label}</span> <CheckboxGroupContext.Provider value={state}> {/* ERROR HERE */} {children} </CheckboxGroupContext.Provider> {description && ( <div {...descriptionProps} style={{ fontSize: 12 }}>{description}</div> )} {errorMessage && state.isInvalid && ( <div {...errorMessageProps} style={{ color: 'red', fontSize: 12 }}> {errorMessage} </div> )} </div> ); } export default CheckboxGroup;
解决思路
自定义合并类型:
AriaCheckboxGroupProps原生不包含children字段,需扩展类型并合并React子节点属性:import { ReactNode } from 'react'; type CheckboxGroupProps = AriaCheckboxGroupProps & { children: ReactNode; };之后将组件的props类型指定为
CheckboxGroupProps:function CheckboxGroup(props: CheckboxGroupProps) { ... }对齐依赖版本:检查
react-aria和react-stately版本是否与官方文档一致。若文档基于新版本编写,而本地依赖版本过低,可能导致类型定义差异。执行升级命令:npm update react-aria react-stately临时类型断言:若需快速验证功能,可通过类型断言绕过检查(不推荐长期使用):
let { children, label, description, errorMessage } = props as AriaCheckboxGroupProps & { children: React.ReactNode };
内容的提问来源于stack exchange,提问作者MaxAuMax
相关产品推荐
相关产品推荐

