滚动到 x 时,react-scroll scrollToBottom 不起作用
react-scroll scrollToBottom not working when scroll to x does work
我正在使用此处的 react-scroll npm 包:https://www.npmjs.com/package/react-scroll
按照他们的示例,我已经设置了我的代码,我可以让 onClick 函数用于滚动特定距离,但 scrollToBottom 仍然不起作用。
我设置的代码也与他们的示例略有不同,因为 this.scrollToBottom
会抛出错误,React.createClass
也是如此。
Header.js
import React from 'react'
import './Header.scss'
import { Link, DirectLink, Element, Events, animateScroll as scroll, scrollSpy, scroller } from 'react-scroll'
const Header = () => ({
componentDidMount: function() {
Events.scrollEvent.register('begin', function(to, element) {
console.log('begin', arguments);
});
Events.scrollEvent.register('end', function(to, element) {
console.log('end', arguments);
});
scrollSpy.update();
},
componentWillUnmount: function() {
Events.scrollEvent.remove('begin');
Events.scrollEvent.remove('end');
},
scrollToTop: function() {
scroll.scrollToTop();
},
scrollToBottom: function() {
scroll.scrollToBottom();
},
handleSetActive: function(to) {
console.log(to);
},
render: function() {
return (
<div className="Header">
<div className="Header-div1">
<h3 className="Header-div1__name">Caleb Middleton</h3>
</div>
<div className="Header-div2">
<p className="Header-div2__About margin-right" onClick={() => scroll.scrollToBottom}>About</p>
<p className="Header-div2__Skills margin-right" onClick={() => scroll.scrollTo(500)}>Skills</p>
<p className="Header-div2__Projects margin-right" onClick={() => scroll.scrollTo(900)}>Projects</p>
</div>
</div>
)
}
})
export default Header
如果您想保留此语法,可以使用 create-react-class
。
运行 npm i create-react-class
并将其包含在您的项目中:
const createReactClass = require('create-react-class');
const Header = createReactClass({
componentDidMount: function () {
...
至于scrollToBottom
问题,目前你只是传递了一个函数而不是执行它。像这样重构它:
<p className="Header-div2__About margin-right" onClick={() => scroll.scrollToBottom()}>About</p>
参考:https://reactjs.org/docs/react-without-es6.html
或者,您可以将 Header
组件转换为扩展 React.Component
的 class 并遵循 JavaScript class 的语法。
我正在使用此处的 react-scroll npm 包:https://www.npmjs.com/package/react-scroll
按照他们的示例,我已经设置了我的代码,我可以让 onClick 函数用于滚动特定距离,但 scrollToBottom 仍然不起作用。
我设置的代码也与他们的示例略有不同,因为 this.scrollToBottom
会抛出错误,React.createClass
也是如此。
Header.js
import React from 'react'
import './Header.scss'
import { Link, DirectLink, Element, Events, animateScroll as scroll, scrollSpy, scroller } from 'react-scroll'
const Header = () => ({
componentDidMount: function() {
Events.scrollEvent.register('begin', function(to, element) {
console.log('begin', arguments);
});
Events.scrollEvent.register('end', function(to, element) {
console.log('end', arguments);
});
scrollSpy.update();
},
componentWillUnmount: function() {
Events.scrollEvent.remove('begin');
Events.scrollEvent.remove('end');
},
scrollToTop: function() {
scroll.scrollToTop();
},
scrollToBottom: function() {
scroll.scrollToBottom();
},
handleSetActive: function(to) {
console.log(to);
},
render: function() {
return (
<div className="Header">
<div className="Header-div1">
<h3 className="Header-div1__name">Caleb Middleton</h3>
</div>
<div className="Header-div2">
<p className="Header-div2__About margin-right" onClick={() => scroll.scrollToBottom}>About</p>
<p className="Header-div2__Skills margin-right" onClick={() => scroll.scrollTo(500)}>Skills</p>
<p className="Header-div2__Projects margin-right" onClick={() => scroll.scrollTo(900)}>Projects</p>
</div>
</div>
)
}
})
export default Header
如果您想保留此语法,可以使用 create-react-class
。
运行 npm i create-react-class
并将其包含在您的项目中:
const createReactClass = require('create-react-class');
const Header = createReactClass({
componentDidMount: function () {
...
至于scrollToBottom
问题,目前你只是传递了一个函数而不是执行它。像这样重构它:
<p className="Header-div2__About margin-right" onClick={() => scroll.scrollToBottom()}>About</p>
参考:https://reactjs.org/docs/react-without-es6.html
或者,您可以将 Header
组件转换为扩展 React.Component
的 class 并遵循 JavaScript class 的语法。