Add to your React Application
This example deploys Address Finder with React.
Install
npm install --save @ideal-postcodes/address-finder
Import Address Finder
Add the following to your component.
import { AddressFinder } from "@ideal-postcodes/address-finder";
import { useEffect, useState, useRef } from "react";
Initializing Component State
Within your component, use a state hook to capture the address elements you need.
const [state, setState] = useState({
line_1: "",
line_2: "",
line_3: "",
post_town: "",
postcode: "",
country: ""
});
Initialise Address Finder within useEffect
// The useRef hook is used to persist the flag shouldRender across re-renders, ensuring the address finder is initialized only once.
const shouldRender = useRef(true);
useEffect(() => {
if (!shouldRender.current) return;
shouldRender.current = false;
AddressFinder.watch({
inputField: "#searchField",
apiKey: "ak_test",
onAddressRetrieved: (address) => {
setState({
line_1: address.line_1,
line_2: address.line_2,
line_3: address.line_3,
post_town: address.post_town,
postcode: address.postcode,
country: address.country,
});
},
});
}, []);
info
Make sure to replace the apikey:ak_test
to your apiKey. This can be located on your account.
Your Address Inputs
Your search field should have an id
which matches inputField
(in this instance it's "searchField"
).
You can create a typical React form by binding the component's state to the relevant input field.
return (
<form className="App">
<h1>Address Finder React Demo</h1>
<div>
<input
placeholder="Start typing find your address"
id="searchField"
type="text"
/>
</div>
<div>
<label htmlFor="line_1">Address Line One</label>
<input type="text"
value={state.line_1}
onChange={(e) => setState({ ...state, line_1: e.target.value })}
/>
</div>
{/* Similar divs for other address parts */}
</form>
);
info
If you wish to add an additional field, include the parameter name from our documentation.
Live Demo
Loading...