使用React和Redux实现从不同页面滚动到视图的方法如下:
<div ref={scrollRef}>目标视图内容</div>
export const scrollToView = (ref) => {
return {
type: 'SCROLL_TO_VIEW',
payload: ref,
};
};
const initialState = {
scrollRef: null,
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case 'SCROLL_TO_VIEW':
return {
...state,
scrollRef: action.payload,
};
default:
return state;
}
};
export default reducer;
import { connect } from 'react-redux';
import { scrollToView } from './actions';
class MyComponent extends React.Component {
handleScrollToView = () => {
this.props.scrollToView(this.scrollRef);
};
render() {
return (
<div>
<button onClick={this.handleScrollToView}>滚动到目标视图</button>
{/* 其他页面内容 */}
</div>
);
}
}
const mapStateToProps = (state) => {
return {
scrollRef: state.scrollRef,
};
};
const mapDispatchToProps = {
scrollToView,
};
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
import { useEffect } from 'react';
import { connect } from 'react-redux';
const App = (props) => {
useEffect(() => {
if (props.scrollRef) {
window.scrollTo({
top: props.scrollRef.current.offsetTop,
behavior: 'smooth',
});
}
}, [props.scrollRef]);
return (
<div>
{/* 其他根组件内容 */}
</div>
);
};
const mapStateToProps = (state) => {
return {
scrollRef: state.scrollRef,
};
};
export default connect(mapStateToProps)(App);
通过以上步骤,你可以在不同页面之间使用React和Redux实现滚动到目标视图的功能。当点击触发滚动的按钮时,Redux的状态会更新,根组件会监听状态的变化并执行滚动操作,从而实现滚动到目标视图的效果。
注意:以上代码示例中的scrollRef是一个React的ref对象,用于获取目标视图的位置信息。在实际使用中,你需要根据你的具体情况来获取和设置ref对象。
领取专属 10元无门槛券
手把手带您无忧上云