i'm creating a react app using typescript & sass preprocessor like this:
// Button.tsx
import React from 'react';
import './Button.scss';
export default class Button extends React.Component {
handleClick(event : React.MouseEvent<HTMLButtonElement, MouseEvent>) {
alert("awesome");
}
render() {
return (
<button type="button" className="btn" onClick={this.handleClick}>Click me</button>
);
}
}
the Button.scss:
@use "./Base" as base;
.btn {
color: #{base.$color};
background-color: base.$color;
}
and the Base.scss:
$color: red;
but producting an error like this:
Failed to compile.
./src/Button.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/Button.scss)
SassError: Invalid CSS after " color: #{base": expected expression (e.g. 1px, bold), was ".$color};"
on line 4 of D:\web\test-react-app\src\Button.scss
>> color: #{base.$color};
-----------------^
It seem the react-scripts cannot compile a new sass syntax like @use, @forward, etc.
I cannot use @import because the base would be shared with another components, so calling @import multiple times resulting Base.scss rendered multiple times.
Anyone can solve my problem above?