Наиболее важным различием между echo
и return
в моей точке зрения является: тип данных результата для каждого из них. когда мы пишем некоторые функции, такие как ниже:
<?php
$value = 150;
function firstFunction($value) {
return $value + 1;
}
echo firstFunction($value) . '<br />';
function secondFunction($value) {
echo $value + 1;
}
secondFunction($value);
и да, оба из них дадут нам 151 в качестве выходного значения. Но в случае return
мы напечатаем firstFunction($value)
как тип данных int
. Другое дело, в случае echo
мы будем печатать secondFunction($value)
как тип данных NULL
. Вы можете попробовать напечатать каждый из них с помощью функции var_dump()
, чтобы понять, что я имел в виду.
<?php
var_dump(firstFunction($value)); ?>
<br />
<?php
var_dump(secondFunction($value));
Эта разница принесет пользу нам, когда мы обрабатываем некоторые значения, возвращаемые из баз данных, особенно в математических операциях, таких как (post просмотров) или что-то в этом роде. Это будет иметь смысл в отношении того, что было написано здесь. надеюсь, что я объяснил это простым способом.
Вам нужно значение по умолчанию для вашего items
, чтобы оно работало до тех пор, пока ваш сетевой запрос не завершится.
Вам также необходимо убедиться, что вы разбираете строку JSON в ответе вашей сети запрос
Пример
class MyComponent extends React.Class {
state = { items: [] };
componentDidMount() {
$.ajax({
type: 'post',
url: 'requests.php',
data: {requestKey: "hello"}
}).done(function(data){
this.setState({
items: JSON.parse(data)
});
}.bind(this));
}
render() {
// ...
}
}
Причина Функция JavaScript map
работает с массивом, а изначально this.state.items
не определена до тех пор, пока не получит ответ от запроса ajax.
компонент получает визуализированный до того, как ответ приходит от ajax, и он выбрасывает error
Решение Здесь мы можем установить начальное значение состояния {items:[]}
, это должен быть массив, поэтому он мог бы выполнить map()
любой без ошибок.
class MyComponent extends React.Class {
constructor(props) {
this.state = {
items: []
};
}
}
items
. значение items
изменяется после ответа ajax, но ничего не происходит в компоненте. благодаря
– S.Mhm
13 July 2018 в 13:21
Первоначальный рендеринг требует, чтобы ваш массив элементов присутствовал в состоянии вашего компонента.
Вы должны инициализировать элементы в конструкторе, подобные этому
this.state = {
items = []
}
console.log
указать вашdata
в ответе на ваш запрос ajax? Это может быть не массив в ответе. – Tholle 13 July 2018 в 12:57[{"img":"0.jpg","heading":"Proj 1","desc":"some text goes here!"},{"img":"0.jpg","heading":"Proj 1","desc":"some text goes here!"},{"img":"0.jpg","heading":"Proj 1","desc":"some text goes here!"}]
:( при первом значении пунктов[]
, тогда это json выше! – S.Mhm 13 July 2018 в 13:18JSON.parse(data)
– Tholle 13 July 2018 в 13:22