Как прокрутить страницу на определённое количество пикселей без анимации

Собственно, я пишу пет проект, мессенджер на React и node js, и при поподании на страницу я получаю из бд ограниченное количество записей(18), а когда пользователь докручивает до верха страницы(по умолчанию я делаю сколл до конца страницы), то должны подгружаться следующие 18 записей, но проблема в том что когда они прогружаются пользователь всё ещё на верху и из-за ему приходится самостоятельно прокрутить ниже чтобы посмотреть раньше написанные сообщения, поэтому я думал сделать типо якоря чтобы без анимации спустить пользователя, хотя возможно это будет печально выглядеть, если есть идея как сделать иначе обязательно попробую.

Компонент:

import React, { useEffect, useRef, useState } from 'react';
import icon from './../images/icon.png'
import Header from '../components/Header';
import PostService from '../API/PostService';
import Loader from '../components/UI/loader/Loader';
import io from "socket.io-client";
import { parseJwt } from '../helpers/ParseJwt';
import { MoreEleven, LowerEleven, Resize } from './../helpers/scroll.js'
import { Link } from 'react-router-dom';

const socket = io()

const Logged = () => {
  const [message, setMessage] = useState('')
  const [messages, setMessages] = useState([])
  const img = useRef()
  const massager = useRef()
  const PayLoad = parseJwt(localStorage.getItem('token'))
  const name = PayLoad.userName

  window.addEventListener('scroll', async () => {
    if(window.pageYOffset === 0) {
      if(messages.length === 0) return
      const post = await PostService.getMess(messages.length, messages.length)
      if(post[0] === undefined) return
      setMessages([...post, ...messages])
      window.scrollTo(0, 500)
    }
  })

  const changeMess = (e) => {
    setMessage(e.target.value)
    if(e.target.value !== '') img.current.classList.add('active')
    else img.current.classList.remove('active')
  }

  const emit = (e) => {
    e.preventDefault()
    if(message === '') return
    socket.emit('send mess', {name: name, mess: message})
    setMessage('')
  }

  socket.on('add mess', ({name, mess, id}) => {
    if(messages) setMessages([...messages, {name: name, text: mess}])
  })

  useEffect(() => {
    async function Post() {
      LowerEleven()
      const post = await PostService.getMess(0, 18)
      setMessages(post)
    }
    Post()
  }, [])

  useEffect(() => {
    if(messages.length > 18) return
    MoreEleven(massager, messages.length)
  }, [messages])

  Resize()

  return ( 
    <div className="all">
      <div className="some_text"></div>
      <div className="grow">
          <div className="header_massanger">
              <h5 className="text-center">Massanger</h5>
          </div>
      </div>
      <div className="all_content">
        <Header name={name} />
      </div>
      <main>
        <div className="main_content">
          <div className="container">
            <div className="the_massanger">
                
            </div>
          </div>
        </div>
      </main>

      <div className="messages" ref={massager}>
        <div className="all_mess">
          {messages
            ? messages.map((p, index) => 
              <div key={index}>
                <Link 
                  className="user_mess" 
                  to={{
                    pathname: `/profile?login=${p.name}`
                  }}
                  >
                   {p.name} 
                </Link>
                <p key={index} className="some_p">{p.text}</p>
              </div>
            )
            : <Loader />
          }
          <div className="some" style={{width: "100px", height: "110px"}}>
              
          </div>
        </div>
        <form id="mess-form" onSubmit={emit}>
          <div className="into_form">
            <input 
              type="text" 
              name="message" 
              id="message" 
              className="mb-4 send_mess" 
              placeholder="Напишите сообщение..." 
              style={{fontSize: '15px'}}
              value={message}
              onChange={changeMess}
            />
            <button type="submit" className="submit" name="do" ref={img}>
              <img src={icon} alt="send_ico" className="send_ico" />
            </button>
          </div>
        </form>
      </div>

      <div className="some_botton"></div>
      <div className="some_botton2"></div>
    </div>
  );
}
 
export default Logged;

Ответы (0 шт):