Skip to content

Hooks not working correctly using off-the-shelf htm@^3.1.0 and preact@^10.5.14 #209

Description

@integryiosama

I am using htm and Preact as follows inside a simple functional component. This component is imported by a class component where it is swapped out according to a switching logic with another component. Here is how I am importing the libraries:

import { html } from 'htm/preact';
import { useEffect, useRef, useState } from 'preact/hooks';

I have the latest installed versions of each package. Hooks appear to work fine on first mount, but when the component unmounts, any version of Preact past 10.2.0 is failing with the message TypeError: Cannot read property '__hooks' of undefined. If I install 10.2.0 explicitly then this error goes away. I assume it is because htm has this version in the devDependencies:

  "devDependencies": {
    "@babel/core": "^7.2.2",
    "@babel/preset-env": "^7.1.6",
    "@types/jest": "^26.0.24",
    "babel-jest": "^24.1.0",
    "babel-preset-env": "^1.7.0",
    "eslint": "^5.2.0",
    "eslint-config-developit": "^1.1.1",
    "jest": "^24.1.0",
    "microbundle": "^0.10.1",
    "preact": "^10.2.0",
    "react": "^16.8.3"
  }

I think there is a version mismatch happening but I cannot figure out how to fix it. I tried module resolution but that didn't help. My package.json has these dependencies:

  "dependencies": {
    "htm": "^3.1.0",
    "preact": "^10.5.14",
    "unfetch": "^4.2.0",
    "unistore": "^3.5.2"
  }

The combination which works is:

  "dependencies": {
    "htm": "^3.1.0",
    "preact": "10.2.0",
  }

Can someone please help me figure this out? Version 10.2.0 came more than a year ago and I would like to use the latest version.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions