开发者问题收集

React.js 无法读取未定义的 V18 属性

2022-08-18
36

我正在制作一个简单的应用程序,在这里我制作一个按钮并向它传递一些道具

<HeaderContainer buttonToLink={'/signin'} buttonToText ={'Sign in'}>
//some code goes here
</HeaderContainer>

然后在另一个文件中处理它

export  function HeaderContainer({children , ...restpros}) {
console.log(restpros.buttonToLink,restpros.buttonToText)
return (
    <Header>
        <Header.Frame>
            <Header.Logo to={'/'} src = {Logo} alt = {'NetFlix'} />
            <Header.ButtonLink to ={restpros.buttonToLink} > <p>{restpros.buttonToText}</p></Header.ButtonLink>
        </Header.Frame>
        {children}
    </Header>
)}

我收到了错误

Can't read property of undefined

我不知道为什么我得到未定义,因为我将我的道具传递给它

注意: Header.ButtonLink 是一个反应路由器链接,我使用样式组件进行样式设置

1个回答

我认为这可能是由于 HeaderContainer 组件中参数的格式所致。如果您查看此处“组合与继承”部分中的 ReactJS 文档: https://reactjs.org/docs/composition-vs-inheritance.html ,其中提到了如何通过 props 对象访问子项,如下所示:

export  function HeaderContainer(props) {
    console.log(props.buttonToLink, props.buttonToText);
    return (
        <Header>
            <Header.Frame>
                <Header.Logo to={'/'} src={Logo} alt={'NetFlix'} />
                <Header.ButtonLink to={props.buttonToLink} > 
                    <p>{props.buttonToText}</p>
                </Header.ButtonLink>
            </Header.Frame>
            {props.children}
        </Header>
    )}

现在您应该能够像以前一样使用您的组件:

<HeaderContainer buttonToLink={'/signin'} buttonToText ={'Sign in'}>
    <View>
        <Text>I'm a child component</Text>
    </View>
</HeaderContainer>

请让我知道这是否适合您,如果不行,我将在我的计算机上构建一个工作示例并与您分享。

祝你好运 :)

Cosby
2022-08-18