【发布时间】:2020-03-02 17:07:07
【问题描述】:
如果(且仅当)一些在 props 中传递时,我应该渲染图片的组件有问题。
我在条件中声明了一个const UserImagesJsx,但我无法在返回的表达式中访问它,它告诉我它是未定义的。
代码如下:
import React from 'react';
import styled from 'styled-components'
import FlickityComponent from 'react-flickity-component'
import 'flickity/css/flickity.css'
const ImagesContainer = styled.div`
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
`
const flickityOptions = {...}
function UserImages(props) {
const userPictures = props.images;
if (userPictures) {
const UserImagesArray = () => {
return (
userPictures.map((text, index) =>
<img id={`profile-image-${index}`} src={text.url} alt={text.name} key={text.name} />
// onClick={() => openModal(text._id)}
));
}
const UserImagesJsx = () => {
return (
<ImagesContainer>
<FlickityComponent className={'carousel'} elementType={'div'} options={flickityOptions}>
<UserImagesArray/>
</FlickityComponent>
</ImagesContainer>
);
}
}
return (
<ImagesContainer>
{ userPictures && <UserImagesJsx/> }
</ImagesContainer>
);
}
export default UserImages;
【问题讨论】:
-
你不是在声明一个带有 JSX 的 const,而是在定义新的 React 函数组件。 It is an anti-pattern to declare components inside the render function.
标签: javascript reactjs scope