Code Monkey home page Code Monkey logo

Comments (6)

rstacruz avatar rstacruz commented on September 27, 2024

yeah, without context that'd have to be done through <NavBar active='/some-page' />.

from deku.

thebearingedge avatar thebearingedge commented on September 27, 2024

I'm curious about this too. I started thinking about a <Link/> component for my router, but without context I can only think to:

import { Link } from 'my-router'

const ListOfLinks = ({ props }) => {
  const { entities, location } = props
  return (
    <ul>
      { entities.map(entity =>
        <li>
          <Link to={`/entities/${entity.id}`} from={location} activeClass={'is-active'}/>
            { entity.name }
          </Link>
        </li>
      ) }
    </ul>
  )
}

Something has to be passed down starting at least at top-level components assigned to <Route/>s. Maybe pass a location object that <Link/> uses to compute isActive or pass Link itself as a prop that internally references the Router...

from deku.

thebearingedge avatar thebearingedge commented on September 27, 2024

... or at least was dynamically created by the router before being added to props

from deku.

anthonyshort avatar anthonyshort commented on September 27, 2024

Yeah we need to figure out a solution for it. I might just wrap all of these issues up into a single thread and summarise everything up until this point. I'm still thinking it could be best to just pass a context object down like you would any other prop. It'd probably be easier to follow. Then we solve for the UX problem in v3.

Thoughts?

from deku.

ashaffer avatar ashaffer commented on September 27, 2024

I've created a primitive that I think essentially solves this problem: redux-subscribe. This let's you create context components that store values from the global state atom in their own local state.

This does require you to have a primitive for doing local state, but that is a bit easier to achieve than the general context problem.

from deku.

troch avatar troch commented on September 27, 2024

A bit late to the conversation. I didn't know there were talks about removing context.

For links, with my implementation of routing I need to have access to the router instance for it to tell me if a link is active or not. Because a router instance might not be stateless (if you don't treat the URL of the page as your source of truth), having it in context prevents the use of singletons and therefore keep things server-side friendly.

from deku.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.