A React implementation of the google DFP API. This package is inspired in the awesome library jquery.dfp, and aims to provide its same ease of usage but, of course, taking into consideration the react concepts & lifecycle features.
react-dfp in v.0.21.0, has the following issues: Invalid arguments: PubAdsService.refresh([]).
This package temporarily avoids this problem. If the problem is resolved, we recommend using react-dfp.
To install just run the following command (no other dependencies are required):
npm install --save @sect/react-dfp
or
yarn add @sect/react-dfp
You can find more details in the React-dfp site.
React-dfp has been designed in a very React-ish way, its main goal is to be able to serve DFP ads in your React application just using React components, which means that you won't have to programmatically perform any initialization call when your page loads.
Here a quick example, notice that ads will render in your page as soon as your component is mounted, through its components (DFPSlotsProvider and AdSlot), react-dfp is making a full abstraction of the google dfp/gpt API.
import React, { Component } from 'react';
import { DFPSlotsProvider, AdSlot } from 'react-dfp';
...
class Page extends Component {
render() {
...
return (
<DFPSlotsProvider>
...
<AdSlot adUnit="home/leaderboard" sizes={[ [900, 90], [728, 90]]} />
...
/* you can override the props */
<AdSlot adUnit="home/mobile" sizes={[ [300, 250], [300, 600]]} />
...
<div>
...
<AdSlot adUnit="home/footer" sizes={[ [300, 250], [300, 600]]} />
...
</div>
...
</DFPSlotsProvider>
);
}
}
See the React-dfp site for more examples (basic example, how to have refreshable ads, etc).
You can find the React-dfp documentation on the website. The site is divided into many sections that describe each one the Components, properties and also the DFPManager API (in case you need to use this one manually).
The website is also full of live/working examples.
You can find the source code of the website here: https://github.com/jaanauati/react-dfp-website.
I certainly know that test cases need to be improved, but, as long as your syntax is clean, submit test cases and, of course, all the interfaces are kept working, all kind of contribution is welcome.
Pull requests are welcome 🍻.