gpt4 book ai didi

javascript - 尝试将 react-bootstrap carousel 转换为 es6 和 redux

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:52 25 4
gpt4 key购买 nike

我从这里获取了受控轮播的示例代码:https://react-bootstrap.github.io/components.html#media-content

我正在尝试使用我的 redux 设置让它在 es6 中工作,但是唉!尽管我付出了所有崇高的努力,但我不断收到以下错误:

SlideShow.js?d20f:20 未捕获类型错误:无法读取未定义的属性“方向”

  1. 我在以下代码中没有绑定(bind)/做错了什么?
  2. 我可以在dumb组件中处理这种状态吗?
  3. 为什么忘恩负义的英国人离开我们? ;((抱歉划掉那个)

这是我的dumb组件 (component/sldeshow.js):

 import React, { Component, PropTypes } from 'react'
import { List } from 'immutable'
import { Link } from 'react-router'
import { Carousel } from 'react-bootstrap'

class Slides extends Component {

constructor(props) {
super(props)
this.state = {
index: 0,
direction: null
}

// Bind callback methods to make `this` the correct context.
this.handleSelect = this.handleSelect.bind(this)

}

handleSelect(selectedIndex, e) {
alert('selected=' + selectedIndex + ', direction=' + e.direction)
this.setState({
index: selectedIndex,
direction: e.direction
})
}

render() {
return (
<div>
{
//this.props.slides
this.props.slides.map((s)=>
{
let id = s.get('id')
let title = s.get('title')
let image = s.get('image')
let alt = s.get('alt')
let caption = s.get('caption')
return (

<Carousel activeIndex={this.state.index} direction={this.state.direction} onSelect={this.handleSelect} key={id}>
<Carousel.Item>
<img width={640} height={480} alt="640x480" src={image} alt={alt}/>
<Carousel.Caption>
<h3>{title}</h3>
<p>{caption}</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img width={640} height={480} alt="640x480" src={image} alt={alt}/>
<Carousel.Caption>
<h3>{title}</h3>
<p>{caption}</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img width={640} height={480} alt="640x480" src={image} alt={alt}/>
<Carousel.Caption>
<h3>{title}</h3>
<p>{caption}</p>
</Carousel.Caption>
</Carousel.Item>
</Carousel>
)
})
}
</div>
)
}
}

Slides.propTypes = {

slides: PropTypes.instanceOf(List).isRequired
}


export default Slides

智能容器:

import React, { Component } from 'react'
import { connect } from 'react-redux'
import { Link } from 'react-router'

import Slides from 'components/SlideShow'
import { getInitalSlides } from 'actions/SlidesActions'


class Home extends Component {

static fetchData({ store }) {
return store.dispatch(getInitalSlides())
}

componentDidMount() {
this.props.getInitalSlides()
}

render() {
return (
<div className="Home">
<h1>Home Page</h1>
<Slides slides={this.props.slides} />
<div><Link to="/question">to question</Link></div>
<div><Link to="/posts">to posts</Link></div>
</div>
)
}
}

function mapStateToProps (state) {
return { slides: state.slides }
}

export { Home }
export default connect(mapStateToProps, { getInitalSlides })(Home)

和示例轮播原始代码:

const ControlledCarousel = React.createClass({
getInitialState() {
return {
index: 0,
direction: null
};
},

handleSelect(selectedIndex, e) {
alert('selected=' + selectedIndex + ', direction=' + e.direction);
this.setState({
index: selectedIndex,
direction: e.direction
});
},

render() {
return (
<Carousel activeIndex={this.state.index} direction={this.state.direction} onSelect={this.handleSelect}>
<Carousel.Item>
<img width={900} height={500} alt="900x500" src="/assets/carousel.png"/>
<Carousel.Caption>
<h3>First slide label</h3>
<p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img width={900} height={500} alt="900x500" src="/assets/carousel.png"/>
<Carousel.Caption>
<h3>Second slide label</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img width={900} height={500} alt="900x500" src="/assets/carousel.png"/>
<Carousel.Caption>
<h3>Third slide label</h3>
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>
</Carousel.Caption>
</Carousel.Item>
</Carousel>
);
}
});

附注我正在从 api 中提取我的幻灯片

最佳答案

在 Carousel 组件中尝试 onSelect={(i,e)=>this.handleSelect(i,e)}

关于javascript - 尝试将 react-bootstrap carousel 转换为 es6 和 redux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com