【发布时间】:2020-12-30 01:35:10
【问题描述】:
我是 Typescript 的新手。我需要在单击按钮时使用 ref 将子状态值传递给父级以更新 reducer 值。
我尝试将ref 传递给孩子,但我收到类似以下的错误:
类型'{值:字符串; onChange: 调度
;参考: MutableRefObject ; }' 不能分配给类型'IntrinsicAttributes & Props & { children?: ReactNode; }'。 类型'IntrinsicAttributes & Props & { children?: ReactNode; 上不存在属性'ref' }'.ts(2322)
父组件
import React, from "react";
import styled from "styled-components";
import {
Page,
Welcome,
ErrorBoundary
} from "components";
const ParentDiv = styled.div`
margin: 0 410px 30px 15px;
`;
export const CreateEvent = (props: any) => {
return (
<Page title='Dashboard'>
<ErrorBoundary>
{(() => {
switch (activeEventStage?.step) {
case 1:
return (
<ErrorBoundary>
<Welcome />
</ErrorBoundary>
);
default:
return null;
}
})()}
</ErrorBoundary>
</Page>
);
};
export default withRouter(CreateEvent);
子组件
import React, { useState } from "react";
import { Row, Col } from "react-bootstrap";
export const Welcome = () => {
const { t } = useTranslation();
const [state, setState] = useState({
welBannerTagline: "",
welHeroTitle: "",
});
return (
<CreateEventFormContainer
title={t("event.create.title")}
subTitile={t("welcome.subTitle")}
>
<>
<Row>
<Col lg='6'>
<DropZoneInputField
titleName={t("welcome.bgImage.title")}
onSelectedFiles={onDropFiles}
imageType='bgImage'
value={state.welBgFilename}
/>
</Col>
<Col lg='6'>
<DropZoneInputField
titleName={t("welcome.banner.title")}
onSelectedFiles={onDropFiles}
imageType='bannerImage'
value={state.welBannerFilname}
/>
</Col>
</Row>
</>
</CreateEventFormContainer>
);
};
export default Welcome;
【问题讨论】:
-
你在哪里使用 useRef?我在上面的代码中没有看到它
-
我已经删除了,因为它破坏了我的工作,我只需要在钩子中使用 typescript 的解决方案来获取子状态值
标签: reactjs typescript react-hooks