Как мне заставить NextUI ListBox прокручиваться до последнего ListItem?Html

Программисты Html
Ответить Пред. темаСлед. тема
Anonymous
 Как мне заставить NextUI ListBox прокручиваться до последнего ListItem?

Сообщение Anonymous »

Некоторые предыстории: я пытаюсь создать канал чата сообщений.
У меня есть компонент NextUI ListBox, который имеет свойство isVirtualized и соответствующий параметры. Он создается с использованием следующего:

{selectedServer ? selectedServer.serverAlias : "Chat Title"}


{(item) => (

{item.text}

)}






И ListboxWrapper:
const ListboxWrapper = ({children}) => (

{children}

);

Элементы списка загружаются динамически. Я бы хотел, чтобы последний элемент в списке всегда находился внизу содержащего его элемента div.
Сейчас у меня есть:
const scrollToBottom = () => {
messagesEndRef.current?.scrollIntoView({behavior: 'smooth' , block: 'end'})
}

При этом происходит прокрутка вверх. Кажется, не имеет значения, какой блок я установил (end или start), поведение такое же. Я делаю что-то неправильно или есть более простой способ сделать это?
У меня были те же результаты с document.getElementById(..).scrollIntoView(..). Я также переместил ссылку на последний элемент списка, но когда я это сделаю, последний элемент списка появится в верхней части контейнера, а другие элементы не будут видны и их нельзя будет прокручивать.
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Я попробовал решение, предложенное ниже, но поведение такое же.
Похоже, что всякий раз, когда я печатаю текст в поле ввода, ListBox прокручивается до вершина. Я обновил приведенный выше код, включив в него полный возврат компонента.
Функции onKeyPressHandler и onChangeHandler с их перехватчиками:
const [selectedKeys, setSelectedKeys] = React.useState(new Set(["text"]));
const selectedValue = React.useMemo(() => Array.from(selectedKeys).join(", "), [selectedKeys]);

const onKeyPressHandler = e => {
if (e.key === "Enter") {
const message = new ApiCall()
const chatRequest = new ChatRequest()
chatRequest.setChattext(textValue)
chatRequest.setServerid(selectedServer.serverID)
message.setChatrequest(chatRequest)
const apiCall = message.serializeBinary()

const requestOptions = {
method: 'POST',
headers: {'Content-Type': 'application/x-protobuf'},
body: apiCall
};

console.log("fetching chats")
fetch('http://localhost:8080/api/chats', requestOptions)
.then(response => {
if (response.ok) {
getChats()
}

changeTextValue("");
})
}
};

const onChangeHandler = e => {
changeTextValue(e.target.value);
};

И, наконец, функция getChats, которая получает чаты из серверной части и вызывает ScrollToBottom после завершения:
const getChats = () => {
fetch("http://localhost:8080/api/chats?serverID=" + selectedServer.serverID)
.then(res => res.json())
.then(data => {
setChats(data);
scrollToBottom()
})
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-listitem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как мне заставить NextUI ListBox прокручиваться до последнего ListItem?
    Anonymous » » в форуме Html
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как мне заставить NextUI ListBox прокручиваться до последнего ListItem?
    Anonymous » » в форуме Html
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как мне заставить NextUI ListBox прокручиваться до последнего ListItem?
    Anonymous » » в форуме Html
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Получение 2 Listbox для работы правильно, как и большинство обычных Listbox
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как я могу создать ListItem (в React) в левом нижнем углу в следующем примере?
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Html»