【发布时间】:2018-02-20 21:03:15
【问题描述】:
我有一个 React 组件,它主要处理相关内容,向用户显示站点内的下一个/上一个内容。
这个组件需要导入背景图片,所以我可以将它们用作组件内部的内联样式。但是,要知道我要导入 哪个 背景图像,我必须查看像这样定义的道具:
<LocationRelated
previousLocationName="Columbus, OH"
previousLocationPath="columbus"
nextLocationName="St. Pete Beach, FL"
nextLocationPath="st-pete-beach"
/>
但是,据我所知,没有办法在组件进入 React 的 render 函数之前查看它的 props - 因此无法进行动态导入。
这是我在导入中使用 ES6 模板文字的失败尝试:
import React from "react"
import pfbRelatedPrevBGImagePath from '`../../images/grid/PFB_${this.props.previousLocationPath}.jpg`'
import pfbRelatedNextBGImagePath from '`../../images/grid/PFB_${this.props.nextLocationPath}.jpg`'
class LocationRelated extends React.Component {
render() {
const pfbRelatedPrevBG = {
backgroundImage: `linear-gradient( to bottom, rgba(1,1,1,0.2), rgba(2,2,2,0.2) ), url(${ pfbRelatedPrevBGImagePath })`
}
const pfbRelatedNextBG = {
backgroundImage: `linear-gradient( to bottom, rgba(1,1,1,0.2), rgba(2,2,2,0.2) ), url(${ pfbRelatedNextBGImagePath })`
}
return (
<div>
<aside className="pfb-longform-container">
<section className="pfb-related-content">
<h3 className="pfb-related-content-title">Additional Locations</h3>
<section className="pfb-related-image-container">
<div
className="pfb-related-1"
style= { pfbRelatedPrevBG }
>
<p className="pfb-related-text">{ this.props.previousLocationName }</p>
</div>
<div
className="pfb-related-2"
style= { pfbRelatedNextBG }
>
<p className="pfb-related-text">{ this.props.nextLocationName }</p>
</div>
</section>
</section>
</aside>
</div>
)
}
}
export default LocationRelated
我的 webpack builder 出错,说它基本上无法读取 this.props.whatever,因为它在尝试读取 import 时尚未定义。有没有办法做到这一点?
附加说明:我正在为该站点使用 Gatsby 静态站点生成器,但这不会真正影响正在发生的事情(至少我认为不会)。
【问题讨论】:
-
你可以在返回
let previousLocation; if(this.props.previousLocationName){previousLocation = this.props.previousLocationName}或者previousLocation = <div>Loading</div>之外执行类似内部渲染函数的操作,然后将{this.props.previousLocationName}替换为{previousLocation} -
@Aaqib - 我明白你在说什么,但这如何帮助我将正确的背景图像导入组件?
-
不能在类外使用 this 关键字。
-
@Jayavel - 还有其他方法吗?
-
如果你再解释一下这会有所帮助,我可以看到 pfbRelatedPrevBG 会有你的图片 url,而 LocationRelated 会有图片 url 道具是正确的吗?
标签: javascript reactjs background-image es6-modules gatsby