Я использую https://github.com/pqina/flip и хочу реализовать метод Tick.count.down()
с помощью React. В примере нет кода React c, который приведен в примере, а также автор завален, поэтому подумал, что попрошу здесь некоторых экспертов по React.
Я клонировал вышеуказанное репо и заменил https://github.com/pqina/flip/tree/master/example/index.html содержимое со следующим кодом.
У меня следующее HTML отлично работает:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>Count Down</title>
<link rel="stylesheet" href="../dist/core/tick.core.min.css" />
</head>
<body>
<style>
.tick {
font-size: 2rem;
}
</style>
<p>Countdown from 10</p>
<div class="tick" data-did-init="startNumericCountdown">
<span data-view="text"></span>
</div>
<script>
function startNumericCountdown(tick) {
console.log(`start numeric countdown...`)
var counter = Tick.count.down(10, 'seconds')
counter.onupdate = function (value) {
tick.value = value
}
counter.onended = function () {
console.log(`countdown over ?`)
}
}
</script>
<script src="../dist/core/tick.core.kickstart.min.js"></script>
</body>
</html>
Проблема возникает, когда я пытаюсь преобразовать его в React. В настоящее время у меня есть следующий код:
import React, { useRef, useEffect } from "react";
import Tick from "@pqina/flip";
import "@pqina/flip/dist/flip.min.css";
export const FlipDate = ({ value }) => {
const divRef = useRef();
const tickRef = useRef();
useEffect(() => {
const didInit = tick => {
console.log("didInit");
console.log({ tick });
tickRef.current = tick;
};
const currDiv = divRef.current;
const tickValue = tickRef.current;
Tick.DOM.create(currDiv, {
value: Tick.count.down(10, 'seconds'),
didInit
});
// divRef.current = Tick.count.down(10, 'seconds');
return () => Tick.DOM.destroy(tickValue);
});
useEffect(() => {
console.log({ tickRef });
if (tickRef.current) {
console.log({ divRef });
tickRef.current.value = value;
}
}, [value]);
return (
<div ref={divRef} className="tick">
<div data-repeat="true">
<span data-view="flip">Tick</span>
</div>
</div>
);
};
Это не работает должным образом. У меня работает библиотека basi c flip
, как вы можете видеть в моей демонстрации: https://codesandbox.io/s/react-flip-countdown-timer-8tin3?file= / src / App. js
3 файлов - это тот же код: 1 с использованием компонента класса Flip.js
, 2 с использованием хуков Flipr.js
и Flippen.js
.
Я хочу, чтобы FlipDate.js
работал. Он должен отсчитывать от 10 секунд до 0 секунд. Пытался сделать это на прошлой неделе, но не мог понять это. Любая помощь приветствуется ?
Примечание: https://github.com/pqina/flip использует https://github.com/pqina/tick под капотом.