I am just trying to make demo working but it doesn't work.
import {h, Component} from 'preact';
import { createContext } from 'preact-context';
const SecureContext = createContext('password');
export default class Terms extends Component {
render() {
return <SecureContext.Provider value="hell world">
<h1>
<SecureContext.Consumer render={password => <span>Password is {{password}}</span>} />
Terms
</h1>
</SecureContext.Provider>;
}
}
password is empty and "Password is Terms" is generated.
No errors in js console.
build log is also fine.
"dependencies": {
"@babel/core": "^7.2.2",
"@babel/plugin-proposal-class-properties": "^7.2.3",
"@babel/plugin-proposal-object-rest-spread": "^7.2.0",
"@babel/plugin-transform-react-jsx": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"@babel/preset-stage-2": "^7.0.0",
"@babel/preset-typescript": "^7.1.0",
"babel-loader": "^8.0.5",
"preact": "^8.4.2",
"preact-context": "^1.1.2",
"typescript": "^3.2.2",
"webpack": "^4.28.1",
"webpack-cli": "^3.2.1"
},
"devDependencies": {
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-react": "^7.0.0",
"preact-async-route": "^2.2.1",
"preact-router": "^2.6.1",
"tslint": "^5.12.0"
}
npm --version
6.5.0
16:02$ node --version
v10.14.2
16:02$ webpack --version
webpack: command not found
16:02$ webpack-cli --version
3.1.2
webpack config:
module.exports = {
entry: "./src/bootstrap.tsx",
output: {
filename: "./public/bundle.js",
publicPath: '/dist/'
},
mode: 'development',
// Enable sourcemaps for debugging webpack's output.
devtool: "eval",
resolve: {
// Add '.ts' and '.tsx' as resolvable extensions.
extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
},
module: {
rules: [
// Handle .ts and .tsx file via ts-loader.
{
test: /\.tsx?$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: [['@babel/typescript', { jsxPragma: "h" }]],
plugins: [
['@babel/proposal-class-properties'],
['@babel/proposal-object-rest-spread'],
['@babel/plugin-syntax-dynamic-import'],
["@babel/transform-react-jsx", { "pragma": "h" }]
]
}
}
}
]
}
};
tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": false,
"noEmit": true,
"strict": true,
"allowJs": true,
"isolatedModules": true,
"esModuleInterop": true,
"jsx": "react",
"jsxFactory": "h"
},
"include": [
"src"
]
}