thin-react-context
v1.0.0
Published
This code defines a React context for managing user data in a React application. It imports the React library and a User type from 'thin-backend'. Then, it defines a UserContext interface with four properties: user, userId, setUser, and setUserId. The Use
Downloads
2
Maintainers
Readme
This code imports React, some utility functions, and types from 'thin-backend', and the previously created UserContext. It defines an interface UserContextProviderProps with a single property, children, which is of type React.ReactNode
The code then exports a function called UserContextProvider that takes a UserContextProviderProps object as an argument. Inside the function, it defines two state variables, user and userId, with their respective setter functions, setUser and setUserId.
The React.useEffect hook is used to asynchronously fetch the current user ID and the corresponding user object when the component is mounted. If a userId is found, it is set using setUserId, and the corresponding user object is set using setUser.
Finally, the UserContext.Provider component is rendered, wrapping the props.children with a value object containing user, userId, setUser, and setUserId. This allows any descendant components to access and manipulate the user state through the UserContext.
Thin Backend
Thin Backend is a lightweight, opinionated, and extensible backend framework for building full-stack web applications. It is built on top of the Express framework and uses MongoDB as its database.
App.tsx
import React from 'react';
import UserContextProvider from './context/UserProvider';
import ChildComponent from './ChildComponent';
function App() {
return (
<UserContextProvider>
<ChildComponent />
</UserContextProvider>
);
}
Profile.tsx
import React from 'react';
import { UserContext } from './context/UserContext';
function Profile() {
const { user, setUser, userId, setUserId } = React.useContext(UserContext);
const handleUserUpdate = (updatedUser) => {
// Update user data
setUser(updatedUser);
};
return (
<div>
<p>User ID: {userId}</p>
<p>Email: {user?.email}</p>
<button onClick={() => handleUserUpdate(newUser)}>Update User</button>
</div>
);
}
In these examples, the ParentComponent wraps the ChildComponent with the UserContextProvider, which manages the user data. The ChildComponent then accesses and manipulates the user data using the UserContext values provided by the UserContextProvider.