我的代码中有什么问题这是一个滑块:,
<Slider {...settings}>
{slides.map(function(item){
return (
<div key={item.id} className="item-slider"
style={{background: `url(images/covers/${item.cover})`}}>
<div className="caption">
<h4>{item.topic}</h4>
<p>{item.title}</p>
</div>
</div>
)
})}
</Slider>
我正在使用 react-slick ,我测试了 item.cover 是否正在接收某些数据。它确实如此。但是当我坚持它的样式它没有出现并检查它并且没有收到任何错误。
示例:代码。 codesandbox.io/s/5v0308l68k(无法上传图片)
答案 0 :(得分:2)
我遇到了同样的问题,请尝试将每张幻灯片包装成div ,如下所示:
<Slider {...settings}>
<div>
<div className='slider__image' style={{'backgroundImage': `url(${House})`}} />
</div>
<div>
<div className='slider__image' style={{'backgroundImage': `url(${Map})`}} />
</div>
<div>
<div className='slider__image' style={{'backgroundImage': `url(${NotAvailable})`}} />
</div>
</Slider>
这样我就可以正常工作。
答案 1 :(得分:0)
您缺少定义:
require()
height
图片
backgroundRepeat
<Slider {...settings}>
{slides.map(function(item){
console.log(item.cover, 'check this');
return (
<div key={item.id} className="item-slider" style={{
background: 'url(' + require(`./images/covers/${item.cover}`) + ')', backgroundRepeat: 'no-repeat', height: 300 }}>
<div className="caption">
<h4>{item.topic}</h4>
<p>{item.title}</p>
</div>
</div>
)
})}
</Slider>
更新:正如您在评论中提到的那样,路径来自公用文件夹,使用process.env.PUBLIC_URL
访问公用文件夹
<div key={item.id} className="item-slider" style={{
background: 'url(' + process.env.PUBLIC_URL +`/images/covers/${item.cover}` + ')', backgroundRepeat: 'no-repeat', height: 300 }}>
答案 2 :(得分:0)
我想我明白了。尝试导入文件顶部的图像,然后使用导入变量作为URL。我得到了它的工作: https://codesandbox.io/s/xvnq2q21w4
<?php
function storeError($message) {
if(!isset($_SESSION['error_message'])) {
$_SESSION['error_message'] = array();
}
if(is_array($message)) {
$_SESSION['error_message'] = array_merge($_SESSION['error_message'], $message);
} else {
$_SESSION['error_message'][] = $message;
}
}
storeError('test');
storeError(array(
"address" => "is a required field",
"city"=> "is a required field",
"state" => "is a required field"
));
print_r($_SESSION['error_message']);
====>
Array
(
[0] => test
[address] => is a required field
[city] => is a required field
[state] => is a required field
)
答案 3 :(得分:0)
Sample response. Here you can see, I have added require.
const items = [{
name: 'hola',
background: require('./img-placeholder.png')
},{
name: 'cola',
background: require('./img-placeholder.png')
},{
name: 'lola',
background: require('./img-placeholder.png')
}]
const renderImages = items.map((val, key) => {
return <div key={key} >
<div style={{ background: `url(${placeholder})`, height: 200 }}>
<div className="caption">
<h4>{val.name} - {key}</h4>
</div>
</div>
</div>
});
注意:require()方法用于加载和缓存JavaScript模块。因此,如果要将本地相对JavaScript模块加载到Node.js应用程序中,只需使用require()方法即可。
答案 4 :(得分:0)
您必须将文件顶部的图像导入为
import myimage from './images/covers/imagename';
您也可以使用动态导入,如:
import(`${path}`)
.then(module => this.setState({ module: module.default }))
然后你可以使用image,其中cover将是导入名称,如:
<Slider {...settings}>
{slides.map(function(item){
import(`${path}`)
.then(module =>
return (
<div key={item.id} className="item-slider"
style={{background: `url(images/covers/${item.cover})`}}>
<div className="caption">
<h4>{item.topic}</h4>
<p>{item.title}</p>
</div>
</div>
); )
})}
</Slider>
答案 5 :(得分:0)
尝试一下:
backgroundImage: "url(" + require("../../img/img.png") + ")"
假设 img.png 位于 src (Webpack)下的 img 文件夹中
答案 6 :(得分:0)
好的,由于某些原因,您无法在用来容纳返回内容的元素中添加样式。所以这就是你要做的:
<Slider {...settings}>
{slides.map((item) => {
return(
<div key={item.id} className="sliderImage">
<div className="backImage" style={{background:`url(/images/covers/${item.cover})`}}>
<div className="slideCaption">
<h4>{item.title}</h4>
<h1>{item.topic}</h1>
</div>
</div>
</div>
)
})}
</Slider>
我希望这可以帮助您解决问题。 ;)