如何使用scrollTo
中的react-springy-parallax
?
我尝试在简单的投资组合页面中使用react-springy-parallax
,您可以点击弹性视差滚动到下一页但我希望能够使用导航链接,这里是如何应用程序布局:
App.js
class App extends React.Component {
constructor() {
super()
this.ref = 'parallax'
}
render() {
return (
<div>
<Parallax ref={this.ref} pages={4}>
<Parallax.Layer
offset={0}
speed={0.5}
onClick={() => this.refs.parallax.scrollTo(1)}
>
<Nav />
<Header />
</Parallax.Layer>
...
因此onClick
只是滚动到下一页,我希望能够在我的Nav
组件中点击About
链接,它会滚动+1所以{{ 1}}
这是导航组件:
Nav.js
scrollTo(1)
我确实尝试将class Nav extends React.Component {
render() {
return (
<div className="nav">
<ul className="links">
<li>
<a href="#about">About</a>
</li>
...
命名导出从scrollTo
导入导航组件,但在Chrome开发控制台中出现错误,说它不是函数
我现在正在尝试使用点击处理程序:
react-springy-parallax
但我不知道如何回复class Nav extends React.Component {
render() {
function handleClick(e) {
e.preventDefault()
console.log(e)
}
return (
<div className="nav">
<ul className="links">
<li>
<a
href="#"
onClick={handleClick}
>
About
</a>
</li>
...
致电App.js
有人有什么想法吗?
答案 0 :(得分:0)
logged an issue with the repo owner他非常友好地提出了一些建议:
使用contextTypes
从scrollTo
parallax
方法
在Nav
组件中使用:
Nav.contextTypes = { parallax: React.PropTypes.object }
这将允许您使用scrollTo
方法
类似的东西:
class Nav extends React.Component {
render() {
return (
<div className="nav">
<ul className="links">
<li>
<a
href=""
onClick={this.context.parallax.scrollTo(0)}
>
Home
</a>
</li>
<li>
<a
href=""
onClick={this.context.parallax.scrollTo(1)}
>
About
</a>
</li>
您也可以将该功能作为道具传递,如下所示:
class App extends React.Component {
constructor(props) {
super(props)
this.handleScroll = value => this.parallax && this.parallax.scrollTo(value)
}
render() {
return (
<div>
<Parallax
ref={ref => (this.parallax = ref)}
pages={4}
>
<Parallax.Layer
offset={0}
speed={0.5}
onClick={() => this.handleScroll(1)}
>
<Nav handleScroll={this.handleScroll} />
然后从Nav
组件使用道具onClick={() => this.props.handleScroll(PAGE)}
,其中PAGE是您要滚动到的页码。