В контроллере такой код:
[HttpGet]
public IActionResult Get()
{
var titles = _context.Post.Skip(Math.Max(0, _context.Post.Count() - 3));
Dictionary<int, string> icons = new Dictionary<int, string>
{
{1, "https://psv4.userapi.com/c856216/u255728013/docs/d4/25a0121ef7e0/icons8-patreon-24.png?extra=iIg5FaXfLQhNTl2Tis4nHFwBNf8axTD_FzWCXXoE5SUkcnUYQw_y0e89lG_jKelKLPLyMPezCAOrlpowROFLbqWs9d5tADacKUpT2XJIn1o9Z1j-ngQ2I2a-eWM8R4b2jueZnSxsWedLgQpiN1OcjbRBWg" },
{2, "https://psv4.userapi.com/c856528/u255728013/docs/d14/452cd2130b88/blog.svg?extra=6rkAwH-8jQYkHEfJcYuRo34NcBA1ydm_DkggZrbs3pG9Y_Lgcd7BmLYB_xJHx2_qHUS-I_2v8YitH5I3_JnNk0RizKCzKg3NwcDzWkH_kX2RDoIB7dDqUjxt1MzFIFRI-t4DJfaKBAJlUI7sfj07TFO37Q&dl=1"},
{3, "https://psv4.userapi.com/c856216/u255728013/docs/d4/25a0121ef7e0/icons8-patreon-24.png?extra=iIg5FaXfLQhNTl2Tis4nHFwBNf8axTD_FzWCXXoE5SUkcnUYQw_y0e89lG_jKelKLPLyMPezCAOrlpowROFLbqWs9d5tADacKUpT2XJIn1o9Z1j-ngQ2I2a-eWM8R4b2jueZnSxsWedLgQpiN1OcjbRBWg" }
};
List<PostsPayload> articles = new List<PostsPayload>();
foreach (var title in titles)
{
articles.Add(new PostsPayload
{
IconUrl = icons[title.ResourceId],
AtricleBody = title.Title
}) ;
}
return Json(articles.ToArray());
}
В классе React js этот код:
export class BlockBuilder extends Component {
constructor(props) {
super(props);
this.state = { blocktitle: "", data: [] };
}
componentDidMount() {
this.fetchData();
}
async fetchData() {
const response = await fetch('api/article');
const data = await response.json();
this.setState({ blocktitle: this.props.blocktitle, data: data });
}
render() {
return (
<React.Fragment>
<div className="newsblock_blockHead">
<div className="blockText">{this.state.blocktitle}</div></div>
<div className="newsblock_body pr-0">
<ArticleBuilder data={this.state.data} />
</div>
</React.Fragment>
);
}
}
class ArticleBuilder extends Component {
constructor(props) {
super(props);
this.state = {
data: []
};
this.setState = { data: this.props.data };
}
render() {
var links = [];
for (var i = 0; i < this.props.data.length; i++) {
var item = this.props.data[i];
links.push(
<div className="article" key={i}>
<img src={item.IconUrl} className="article_image" />
<p className="paragraph">
<a href={"#"}>{item.ArticleBody}</a>
</p>
</div>
);
}
return (
<React.Fragment>
{links}
</React.Fragment>
);
}
}
Response
[{"iconUrl":"https://psv4.userapi.com/c856216/u255728013/docs/d4/25a0121ef7e0/icons8-patreon-24.png?extra=iIg5FaXfLQhNTl2Tis4nHFwBNf8axTD_FzWCXXoE5SUkcnUYQw_y0e89lG_jKelKLPLyMPezCAOrlpowROFLbqWs9d5tADacKUpT2XJIn1o9Z1j-ngQ2I2a-eWM8R4b2jueZnSxsWedLgQpiN1OcjbRBWg","atricleBody":"October\u0027s project 2B Nier Automata RE!"},{"iconUrl":"https://psv4.userapi.com/c856216/u255728013/docs/d4/25a0121ef7e0/icons8-patreon-24.png?extra=iIg5FaXfLQhNTl2Tis4nHFwBNf8axTD_FzWCXXoE5SUkcnUYQw_y0e89lG_jKelKLPLyMPezCAOrlpowROFLbqWs9d5tADacKUpT2XJIn1o9Z1j-ngQ2I2a-eWM8R4b2jueZnSxsWedLgQpiN1OcjbRBWg","atricleBody":"September phone wallpaper #2 [Hidden treasure pt. 2]"},{"iconUrl":"https://psv4.userapi.com/c856528/u255728013/docs/d14/452cd2130b88/blog.svg?extra=6rkAwH-8jQYkHEfJcYuRo34NcBA1ydm_DkggZrbs3pG9Y_Lgcd7BmLYB_xJHx2_qHUS-I_2v8YitH5I3_JnNk0RizKCzKg3NwcDzWkH_kX2RDoIB7dDqUjxt1MzFIFRI-t4DJfaKBAJlUI7sfj07TFO37Q\u0026dl=1","atricleBody":"Vacation time! Interesting stories inside!"}]
Идея такая: из БД вытащить titles, сопоставить с нужными иконками и вернуть в массив KeyValue в js коде, а затем занести его в state. Потом сделать map и вернуть элементы. Не понимаю, почему не срабатывает правильно фетч, пробовал возвращать и просто Dictionary, и JsonConvert.Seralize(articles), но всё равно ошибки. Во вкладке Network браузера нашел запрос к article, но там в response вообще идет html-код index.html почему-то.
UPD: сейчас дошёл хотя бы до того, что получаю нормальный ответ с сервера виде json, однако элементы все равно не отображаются. Что я делаю не так? В links хранится три Object с IconUrl и ArticleBody, если что. PostsPayload - модель, в которой есть одноименные свойства
По итогу проблема чрезвычайно глупая. После редактирования кода все почти получилось, но не работало. А не работало потому что не учел, что при конвертации в Json, названия превращаются в camelCase, судя по всему И была опечатка в ArticleBody
Прошу прощения за глупость такую
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть код "корзины", как можно сделать проверку наличия класса, если класс уже есть, то вместо добавления нового блока увеличивать значение...
Такая проблема, у меня не работает css файл на локальном сервере, в коде вроде ошибок нету, вчера все работалоPS Тут вставленный код отлично...
> Максимальное число вершин дерева в цепочке, начинающейся в корне дерева, заканчивающейся в одном из его листьев, и не содержащей никакую...
Для каждого слова заданного текста указать долю согласныхОпределить слово, в котором доля согласных максимальна