änderte ich das Klassenattribut meiner Requisiten bin zu ändern und dann möchte ich die Komponente mit den neuen Klassen rerender aber das funktioniert nicht. Ich habe über die Methode sentComponentUpdate gelesen, aber diese Methode wird nie aufgerufen.reagieren nicht Komponente nicht rerender wenn Requisiten
var ReactDOM = require('react-dom');
var React = require('react');
class Button extends React.Component {
constructor(props) {
super(props);
console.log("BUTTON")
console.log(props);
var options = props.options;
}
componentWillMount() {
var defaultFeatureOptionId = this.props.feature.DefaultFeatureOptionId;
this.props.options.forEach((option) => {
var classes = "";
if (option.Description.length > 10) {
classes = "option-button big-button hidden";
} else {
classes = "option-button small-button hidden";
}
if (option.Id === defaultFeatureOptionId) {
classes = classes.replace("hidden", " selected");
option.selected = true;
}
option.class = classes;
});
}
shouldComponentUpdate(props) {
console.log("UPDATE");
}
toggleDropdown(option, options) {
console.log(option);
console.log(options)
option.selected = !option.selected;
options.forEach((opt) => {
if (option.Id !== opt.Id) {
opt.class = opt.class.replace("hidden", "");
}
else if(option.Id === opt.Id && option.selected) {
opt.class = opt.class.replace("", "selected");
}
});
}
render() {
if (this.props.options) {
return (<div> {
this.props.options.map((option) => {
return <div className={ option.class } key={option.Id}>
<div> {option.Description}</div>
<img className="option-image" src={option.ImageUrl}></img>
<i className="fa fa-chevron-down" aria-hidden="true" onClick={() => this.toggleDropdown(option, this.props.options) }></i>
</div>
})
}
</div>
)
}
else {
return <div>No options defined</div>
}
}
}
module.exports = Button;
Ich habe viele andere Sache über shouldComponentUpdate und componentWillReceiveProps lesen, aber es scheint, etwas anderes zu sein, ich bin fehlt.
ausgelöst nach ein Blog i, wenn Zustand ausgelöst werden „eine Wieder machen kann nur gelesen einer Komponente hat sich geändert. Der Zustand von einem Requisiten ändern ändern können, oder von einer direkten setState ändern. die Komponente erhält den aktualisierten Zustand und Reagieren entscheidet, ob es re- sollte render die Komponente. "Sowohl die Requisiten als auch der Zustand werden die Zustandsänderung auslösen. –