Skip to main content

How to navigate from one page to another with Airtable reactjs



I have 2 pages(home.js and access.js) linked to index.js


when I run the code via block run. it says Bundle updated but am seeing



this error in my airtable



Error: Objects are not valid as a React child (found: Error: [object Object]).

If you meant to render a collection of children, use an array instead.

in Error (created by Context.Consumer)

in Route (created by HelloWorldBlock)

in Switch (created by HelloWorldBlock)

in div (created by HelloWorldBlock)

in Router (created by BrowserRouter)

in BrowserRouter (created by HelloWorldBlock)

in HelloWorldBlock

in div (created by BlockWrapper)

in Suspense (created by BlockWrapper)

in BlockWrapper (created by ForwardRef)

in ForwardRef

throwOnInvalidObjectType@https://localhost:9000/__runFrame/bundle.js:59956:15

reconcileChildFibers@https://localhost:9000/__runFrame/bundle.js:60856:31



Here is the code



index.js



import {

initializeBlock,

useBase,

useRecords,

} from '@airtable/blocks/ui';

import React, { Component } from 'react';

import { BrowserRouter, Route, Switch, NavLink} from 'react-router-dom';

import ReactDOM from 'react-dom';



import Home from './home';

import Access from './access';



function HelloWorldBlock() {

// YOUR CODE GOES HERE

//return <div>Hello world brother 🚀</div>;





return (

<BrowserRouter>



<div>Hello world brother 🚀</div>





<div className="container">

<div className="heading">



<div className="heading-right">



<NavLink to="/home">Home</NavLink>

<NavLink to="/access">Home</NavLink>





</div>

</div>





<Switch>

<Route path="/" component={Home} exact/>

<Route path="/access" component={Access}/>



<Route component={Error}/>

</Switch>

</div>

</BrowserRouter>

);







}



initializeBlock(() => <HelloWorldBlock />);



here is home.js



import {initializeBlock,

useBase,

useRecords,

} from '@airtable/blocks/ui';





import React, { Component } from 'react'

import {NavLink} from 'react-router-dom';



export default class Home extends Component {

state = {



}



componentDidMount() {}



render(){



return (





<div>



<h1>

Welcome to home page

</h1>







</div>



)

}







}









/*

function Home() {

// YOUR CODE GOES HERE

return <div>Hello welcome to home page 🚀</div>;

}



initializeBlock(() => <Home />);



*/



here is access.js



import {initializeBlock,

useBase,

useRecords,

} from '@airtable/blocks/ui';





import React, { Component } from 'react'

import {NavLink} from 'react-router-dom';



export default class Access extends Component {

state = {}

componentDidMount() {

}



render(){

return (

<div>

<h1>

hello welcome to Access Page

</h1>

</div>



)

}







}









/*



function Access() {

// YOUR CODE GOES HERE

return <div>Welcome to Access Page 🚀</div>;

}



initializeBlock(() => <Access />);





*/

That error is because you didn’t define Error for <Route component={Error}/>, so it was using the default Error object from the browser.



Once I commented that out, it rendered, but following links didn’t work. I changed from BrowserRouter to MemoryRouter and all was well. Well, except your link for Home should just be /, but I’m sure you would have figured that out.


That error is because you didn’t define Error for <Route component={Error}/>, so it was using the default Error object from the browser.



Once I commented that out, it rendered, but following links didn’t work. I changed from BrowserRouter to MemoryRouter and all was well. Well, except your link for Home should just be /, but I’m sure you would have figured that out.


Thanks Brother. You have saved my day


Reply