Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
react-ticker
Advanced tools
React Ticker is a lightweight, performant React component, that moves text, images and videos infinitely like a newsticker.
React Ticker is a lightweight, performant React component, that moves text, images and videos infinitely like a newsticker.
It can be used to replace the deprecated marquee
-HTML-tag.
Install the package with npm or yarn
npm install react-ticker
yarn add react-ticker
Use it in your React components!
import React from 'react'
import Ticker from 'react-ticker'
const MoveStuffAround = () => (
<Ticker>
{({ index }) => (
<>
<h1>This is the Headline of element #{index}!</h1>
<img src="www.my-image-source.com/" alt=""/>
</>
)}
</Ticker>
)
export default MoveStuffAround
Take a look at the CodeSandbox.
Name | Type | Default | Description |
---|---|---|---|
speed | number | 5 | |
direction | string | toLeft | Opposite direction: toRight |
mode | string | chain | chain By default, the elements follow one and another immediately. await A new element appears as soon as the previous one has disappeared completely. smooth A new element appears as soon as the previous one starts to disappear. |
height | string or number | auto | Auto-height: By default, the Ticker will adapt the height of its highest visible child. Fixed height: Alternatively you can give it a fixed height: A number will be set as pixels, a string can be everything. |
offset | string or number | 0 | By default, the first element in the Ticker will align to the Tickers left side. Fixed Offset: A number will move the Ticker's first child to the right by n pixel. Relative Offset: The offset can also be defined in percent of the Ticker’s width. Run-in: The string run-in hides the first element, so the Ticker starts empty. |
move | boolean | true | Set to false stops the Ticker. |
onNext | function | (index) => {} | Return the index of the next element to the parent component |
onFinish | function | () => {} | Tell the parent component that one element is out of screen |
If you want to move text around, be sure, that your webfonts have loaded, before you initiate the Ticker-component! Otherwise the widths might be calculated wrong for the first iteration. To await your webfonts, try out Web Font Loader.
If you want to avoid linebreaks in your text-elements, use the CSS-property white-space: nowrap;
.
It is possible to dynamically load new elements. This feature is still experimental. It only works properly, if you use the property offset="run-in"
and provide a placeholder while loading.
const GetRatesFromAPI = () => {
const [rates, setRates] = useState("");
useEffect(() => {
async function fetchData() {
const ratesFromAPI = await makeAPICall();
setRates(ratesFromAPI);
}
fetchData();
}, []);
// A placeholder is needed, to tell react-ticker, that width and height might have changed
// It uses MutationObserver internally
return rates ? (
<p style={{ whiteSpace: "nowrap" }}>{rates.join(" +++ ")} +++ </p>
) : (
<p style={{ visibility: "hidden" }}>Placeholder</p>
);
};
function StockTicker() {
return (
<Ticker offset="run-in" speed={10}>
{() => <GetRatesFromAPI />}
</Ticker>
);
}
export default StockTicker;
React Ticker calls its function-as-child anytime it runs out of content. It does not matter, if this function is a static component or a component, that loads content from an API. It is important, that you provide a placeholder during the loading time of the API-call, to trigger the mutation observer when the content has arrived.
Currently react-ticker
runs out of elements, when you leave the browser tab. To fix it, there is this workaround using the Page Visibility API utilized by this great Module: react-page-visibility
import React, { useState } from 'react'
import Ticker from 'react-ticker'
import PageVisibility from 'react-page-visibility'
const MoveStuffAround = () => {
const [pageIsVisible, setPageIsVisible] = useState(true)
const handleVisibilityChange = (isVisible) => {
setPageIsVisible(isVisible)
}
return (
<PageVisibility onChange={handleVisibilityChange}>
{pageIsVisible && (
<Ticker>
{({ index }) => (
<>
<h1>This is the Headline of element #{index}!</h1>
<img src="www.my-image-source.com/" alt=""/>
</>
)}
</Ticker>
)}
</PageVisibility>
)
}
export default MoveStuffAround
React Ticker has no dependecies besides React 16+ (the minimum minor-release still has to be looked up).
React Ticker should work in all current browsers as well as Internet Explorer 11. If you discover bugs in older browser versions, please file an issue!
Every contribution is very much appreciated. Feel free to file bugs, feature- and pull-requests.
If this plugin is helpful for you, please star it on GitHub.
FAQs
React Ticker is a lightweight, performant React component, that moves text, images and videos infinitely like a newsticker.
The npm package react-ticker receives a total of 4,993 weekly downloads. As such, react-ticker popularity was classified as popular.
We found that react-ticker demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.