slmgc / react-hint

Tooltip component for React, Preact, Inferno

Home Page:https://react-hint.js.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot get this to work

danherd opened this issue · comments

I'm following the docs and can't seem to get this working. Here's my index.tsx:

import * as React from 'react'
import { render } from 'react-dom'
import { AppContainer } from 'react-hot-loader'
import App from './components/App'
import { BrowserRouter } from 'react-router-dom'
import { Provider } from 'unstated'
import ReactHintFactory from 'react-hint'
import 'react-hint/css/index.css'

const rootEl = document.getElementById('root')
const ReactHint = ReactHintFactory(React)

render(
  <AppContainer>
    <Provider>
      <BrowserRouter>
        <App>
          <ReactHint />
        </App>
      </BrowserRouter>
    </Provider>
  </AppContainer>,
  rootEl
)

// Hot Module Replacement API
declare let module: { hot: any }

if (module.hot) {
  module.hot.accept('./components/App', () => {
    const NewApp = require('./components/App').default

    render(
      <AppContainer>
        <Provider>
          <BrowserRouter>
            <NewApp>
              <ReactHint />
            </NewApp>
          </BrowserRouter>
        </Provider>
      </AppContainer>,
      rootEl
    )
  })
}

The following line:

const ReactHint = ReactHintFactory(React)

Generates this in my console:

Uncaught TypeError: react_hint_1.default is not a function

package.json devDependencies:

  "devDependencies": {
    "@babel/cli": "^7.1.5",
    "@babel/core": "^7.1.6",
    "@babel/preset-env": "^7.1.6",
    "@babel/preset-react": "^7.0.0",
    "@types/jest": "^23.3.10",
    "@types/lodash": "^4.14.119",
    "@types/node": "^10.12.10",
    "@types/react": "^16.7.8",
    "@types/react-dnd": "^3.0.2",
    "@types/react-dnd-html5-backend": "^3.0.2",
    "@types/react-dom": "^16.0.11",
    "@types/react-router-dom": "^4.3.1",
    "awesome-typescript-loader": "^5.2.1",
    "axios": "^0.18.0",
    "babel-loader": "^8.0.4",
    "css-loader": "^1.0.1",
    "dotenv-webpack": "^1.5.7",
    "express": "^4.16.4",
    "file-loader": "^2.0.0",
    "html-webpack-plugin": "^3.2.0",
    "image-webpack-loader": "^4.5.0",
    "ip": "^1.1.5",
    "jest": "^23.6.0",
    "json-rules-engine": "^2.3.2",
    "lodash": "^4.17.11",
    "node-sass": "^4.10.0",
    "react": "^16.6.3",
    "react-addons-test-utils": "^15.6.2",
    "react-dnd": "^7.0.2",
    "react-dnd-html5-backend": "^7.0.2",
    "react-dom": "^16.6.3",
    "react-dropdown": "^1.6.3",
    "react-hint": "^3.2.0",
    "react-hot-loader": "^4.3.12",
    "react-router-dom": "^4.3.1",
    "react-select": "^2.2.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1",
    "tslint": "^5.11.0",
    "typescript": "^3.1.6",
    "uglifyjs-webpack-plugin": "^2.0.1",
    "unstated": "^2.1.1",
    "webpack": "^4.26.1",
    "webpack-cli": "^3.1.2",
    "webpack-dev-middleware": "^3.4.0",
    "webpack-dev-server": "^3.1.10",
    "webpack-merge": "^4.1.4"
  }

Am I missing something? Is there a bug?

OK, figured it out.

It would appear I needed to use:

import * as ReactHintFactory from 'react-hint'

instead of:

import ReactHintFactory from 'react-hint'

and it works perfectly. Feel free to close this ticket, but you might want to update the docs too...

@danherd I guess this is related to the TypeScript syntax, e.g. look at React import:

TS:

import * as React from 'react'

JS:

import React from 'react'

That's one of the differences between two languages.