"로고 벽"과 같은 것을 만들려고하지만 동일한 이미지가있을 수 있습니다. 이미지를 렌더링 할 때 동일한 이미지 URL이 이미 가져온 경우에도 각각로드됩니다. 여기 React Native : 렌더링 된 이미지 재사용
내 코드입니다 :export default class LogoWall extends React.Component
{
//...
renderLogo(logoUrl)
{
// need to wrap into a function to have unique keys...
return (key) => <Image
key={key}
source={{uri: logoUrl}}
style={styles.logo}
/>
}
render()
{
// trying to save logos within this object
const logos = {};
return (
<View style={styles.rowContainer}>
{(() => {
let logoRows = [];
for (let i = 0; i < this.props.rows; i++) {
logoRows.push(<View style={styles.logoRow} key={i}>
{this.getLogos(i % 2 === 0).map((logoUrl, key) => {
// should only render when this image doesn't exist
if (typeof logos[logoUrl] === 'undefined') {
logos[logoUrl] = this.renderLogo(logoUrl);
}
return logos[logoUrl](key)
})}
</View>)
}
return logoRows;
})()}
</View>
)
}
}
어떻게이 한 번만 하나 개의 이미지를로드 향상시킬 수 있지만, 그들 (다시 반입하지 않고) 여러 번 표시가 있습니까?
답장을 보내 주셔서 감사합니다. 벽이 예를 들어 포함되어 있기 때문에 다시 가져 오는 중입니다. 20 개의 로고가 있으며, 각각 하나씩 ~ 1 초의 지연으로 렌더링됩니다 (네트워크 활동도 확인). 다운로드가 완료되면 캐시됩니다 (단, 앱을 다시 시작한 후에 만 가능). 내가 실제로 원하는 것은 이미지의 렌더링 된 인스턴스에 액세스하는 것입니다. 위의 그림과 같이 변수에 저장하면 리 페치 (또는 앱 재시작 후 캐시 사용)가 시도됩니다. 그래서 렌더링 된 인스턴스를 저장하는 방법이 필요하므로 다시 렌더링하지 않습니다. – Dennis
해결하는 것이 큰 문제입니다. 내가 찾은 해결책을 배우고 싶습니다. 코어에서도 유용할까요? –