Я начал изучать JavaScript и в эти дни реагировал, я пытался нарисовать некоторые сетки на веб-сайте и столкнулся с такой проблемой:
Все работает нормально, когда я кодирую так:
export default class PathfindingVisualizer extends Component {
constructor(props) {
super(props);
this.state = {
nodes: [],
};
}
componentDidMount() {
const nodes = getInitialGrid();
this.setState({ nodes });
}
render() {
const { nodes } = this.state;
console.log(nodes);
return (
<>
<p style={{ fontSize: 40 }}>Visualize Algorithms</p>
<br />
<br />
<div className="node-container">{nodes}</div> // HERE WORKS FINE
</>
);
}
}
И веб-сайт оказался таким, и это нормально:
Но когда я изменил код следующим образом:
render() {
const { nodes } = this.state;
console.log(nodes);
return (
<>
<p style={{ fontSize: 40 }}>Visualize Algorithms</p>
<br />
<br />
<NodeContainer>{nodes}</NodeContainer> // HERE
</>
);
}
}
Сетки просто исчезают, и ничего в <body>
:
Кто-нибудь может мне помочь? Я не могу понять, почему это происходит.
Класс NodeContainer и Node выглядят так:
export default class NodeContainer extends Component {
render() {
return <div className="node-container"></div>;
}
}
export default class Node extends Component {
render() {
return <div className="node-item"></div>;
}
}
Эй, спасибо вам, ребята, за ответы :) Я впервые задаю вопрос здесь. Я решил проблему, добавив {this.props.xxxxx}, как вы сказали, и это работает. Исправлены коды следующим образом:
...
<br />
<br />
<NodeContainer nodes={nodes}></NodeContainer> // HERE
</>
...
класс NodeContainer:
export default class NodeContainer extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return <div className="node-container">{this.props.nodes}</div>; //HERE
}
}
Я не использовал 'this.props.children', но проверю позже. Я пропустил учебник по основам c, поэтому я не понимал, как передавать параметры в класс, я проверил это видео, чтобы помочь себе быстро понять это:
https://www.youtube.com/watch?v=ICmMVfKjEuo&list=PLN3n1USn4xlntqksY83W3997mmQPrUmqM&index=5&t=0s