# thin-react-context

> 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

Latest version **1.0.0** (published 2023-04-06) · ISC license · 0 weekly downloads

## Install

```sh
npm install thin-react-context
pnpm add thin-react-context
yarn add thin-react-context
bun add thin-react-context
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2023-04-06 |
| First published | 2023-04-06 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 18 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Bradley Dirheimer |
| Maintainers | dirheimerb1 |
| Keywords | thin-backend, react, nextjs, context |

## Links

- npm: https://www.npmjs.com/package/thin-react-context
- Repository: https://github.com/dirheimerb/thin-react-context
- Homepage: https://github.com/dirheimerb/thin-react-context.git#readme
- Issues: https://github.com/dirheimerb/thin-react-context.git/issues
- npm.io page: https://npm.io/package/thin-react-context

## Dependencies (2)

- [react](https://npm.io/package/react.md) ^18.2.0
- [thin-backend](https://npm.io/package/thin-backend.md) ^0.12.1

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 1.0.0 (latest) — 2023-04-06

## 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

```typescript
import React from 'react';
import UserContextProvider from './context/UserProvider';
import ChildComponent from './ChildComponent';

function App() {
    return (
        <UserContextProvider>
            <ChildComponent />
        </UserContextProvider>
    );
}
```

## Profile.tsx

```typescript
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.

---
_Source: https://npm.io/package/thin-react-context · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
