这是我在屏幕上呈现的应用程序组件,但是传递给输入字段的data-length属性不起作用,否则工作得很好。 您可以在实现CSS的官方文档上真正轻松地检查一下:-https://materializecss.com/text-inputs.html
import React, { Component } from "react";
import M from "materialize-css";
class App extends Component {
componentDidMount() {
M.AutoInit();
}
render() {
return (
<div class="row">
<form class="col s12">
<div class="row">
<div class="input-field col s6">
<input id="input_text" type="text" data-length="10" />
<label for="input_text">Input text</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<textarea
id="textarea2"
class="materialize-textarea"
data-length="120"
></textarea>
<label for="textarea2">Textarea</label>
</div>
</div>
</form>
</div>
);
}
}
export default App;
对于React,无论何时我们使用某种第三方库或框架,都需要使用componentDidMount()
来初始化它们提供的js组件。
有几项与实现文档不同-
import "materialize-css/dist/css/materialize.min.css";
componentDidMount
中的初始化maxLength
属性而不是data-length
。对于其他组件,您可以检查Reactize
代码
import React, { Component } from "react";
import M from "materialize-css";
import "materialize-css/dist/css/materialize.min.css";
class Counter extends Component {
constructor() {
super();
this.state = {
text: ""
};
}
componentDidMount() {
let input = document.getElementById("input_text");
M.CharacterCounter.init(input);
}
onTextChange = event => {
this.setState({
text: event.target.value
});
};
render() {
return (
<div className="row">
<form className="col s12">
<div className="row">
<div className="input-field col s6">
<input
id="input_text"
type="text"
maxLength="10"
onChange={this.onTextChange}
value={this.state.text}
/>
<label htmlFor="input_text">Input text</label>
</div>
</div>
</form>
</div>
);
}
}
export default Counter;