#reactjs
Вопрос:
Я получаю ошибку, Uncaught Error: Cannot add node 1 because a node with that id is already in the Store.
когда пытаюсь использовать функцию.
вот моя функция:
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
const [value, setValue] = useState(0);
const slides = ["one", "two", "thre"];
let size = slides.length;
useEffect(() => {
setValue(size);
}, [size]);
const prev = () => {
if (size amp;amp; size < 1 amp;amp; size amp;amp; size > slides.length) return;
size--;
};
const next = () => {
if (size amp;amp; size < 1 amp;amp; size amp;amp; size > slides.length) return;
size ;
};
return (
<div className="slider">
<a href="/" className="prev" onClick={prev}>
Previous
</a>
<h2>Barking Road, London {value}</h2>
<a href="/" className="next" onClick={next}>
Next
</a>
</div>
);
}
Я хочу, чтобы пользователь мог нажимать до 1 минуты и 3 максимум. но это не работает.
Ответ №1:
На самом деле вам не нужно useEffect
, чтобы достичь этого, также измените свой <a>
тег на <button>
Рабочий фрагмент:
function App() {
const [value, setValue] = React.useState(1);
const slides = ["one", "two", "thre"];
const prev = () => {
if (value > 1) setValue(value - 1);
};
const next = () => {
if (value < slides.length) setValue(value 1);
};
return (
<div className="slider">
<button className="prev" onClick={prev}>
Previous
</button>
<h2>Barking Road, London {value}</h2>
<button className="next" onClick={next}>
Next
</button>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="root"></div>
Ответ №2:
Просто обновите вот так:
const prev = () => {
if (value <= 1) return;
setValue(value - 1);
};
const next = () => {
if (value >= slides.length) return;
setValue(value 1);
};
И измените тег на другой тег: https://codesandbox.io/s/stupefied-robinson-yjmkm?file=/src/App.tsx