#json #reactjs
#json #reactjs
Вопрос:
У меня есть 2 сценария:
- table.js : визуализирует таблицу данных
- os.js : возвращает имя операционной системы
Данные в таблице загружаются с помощью json. Пример json:
[
{"server":"server1.com"},
{"server":"server2.com"}
]
При нажатии кнопки таблица должна проверять имя_сервера и обновлять соответствующие данные ОС. Как я могу это сделать?
table.js:
import getOS from "./os.js";
class TableRow extends Component {
constructor(props) {
super(props);
this.state= {label: ''};
this.update = this.update.bind(this);
}
update(){
getOS(servername);
}
render() {
const { data } = this.props;
const list = data.map(adata => {
return (
<tr>
<td key={adata.server}>{adata.server}</td>
<td key={adata.os}></td>
</tr>
)//return
})//regionslist
return (
<React.Fragment>
{ list }
<Button size="sm" type="submit" onClick= {this.update}>
Get Details
</Button>
</React.Fragment>
);//return
} //render
} //class
Комментарии:
1. итак, что делает функция getOS? Возвращает ли он данные, которые вы хотите отобразить?
2. yes…it просто возвращает версию ОС, как только ей передается servername … например, для server1 он вернет osname как «Linux».
3. и откуда вы получаете servername прямо сейчас?
4. именем сервера будут данные в этой строке: <td key={adata.server}>{adata.server}</td> …. пытаюсь найти способ получить значение этой переменной, т.е. servername
5. итак, подождите… Вы хотите найти способ передать эти данные в
this.update
функцию или вы хотите использовать эти данные для отображения и отображения строк?
Ответ №1:
Если вы хотите вернуть кнопку в каждой строке, вы можете сделать это следующим образом:
class TableRow extends Component {
constructor(props) {
super(props);
this.state = { label: '', data: this.props.data };
}
update = (servername) => {
const data = getOS(servername);
this.setState({ data });
};
render() {
return this.state.data.forEach((adata) => {
return (
<React.Fragment>
<tr>
<td key={adata.server}>{adata.server}</td>
<td key={adata.os} />
</tr>
<Button size="sm" type="submit" onClick={this.update(adata.server)}>
Get Details
</Button>
</React.Fragment>
);
}); //return
} //render
} //class