SolidJSS
SolidJSโ€ข3y agoโ€ข
9 replies
Grahf

Context Provider only getting default values - can't update

I'm trying to use a context provider in an astro app which is in a tauri app. While I'd normally wrap the <App /> component in the providers I don't have that option here so I'm wrapping individual components like this:
  <AdventurerNameProvider client:load>
    <AdventurerDetails client:load />
  </AdventurerNameProvider>



Then I feel like my context provider is pretty standard?
import { createContext, useContext, createSignal, createEffect } from 'solid-js'

export const AdventurerNameContext = createContext(['default value', () => {    console.log('AHHHHH')
}])

export const AdventurerNameProvider = (props) => {
  const [adventurersName, setAdventurersName] = createSignal('dfdsdsf')

  createEffect(() => {
    console.log('a test: ', adventurersName())
  })

  return (
    <AdventurerNameContext.Provider
      value={[adventurersName, setAdventurersName]}
    >
      {props.children}
    </AdventurerNameContext.Provider>
  )
}

export const createAdventurersName = () => {
  const newAdventurersName = useContext(AdventurerNameContext)[0]
  return newAdventurersName
}

export const createSetAdventurersName = () => {
  const newSetAdventurersName = useContext(AdventurerNameContext)[1]
  return newSetAdventurersName
}


When I import createAdventurersName into another JSX component it will display "default value". When I import createSetAdventurersName into a JSX component is console.log AHHHHH
Was this page helpful?