Как многие люди говорили об этом раньше, Java всегда имеет значение pass-by-value
Вот еще один пример, который поможет вам понять разницу ( классический своп пример ):
public class Test {
public static void main(String[] args) {
Integer a = new Integer(2);
Integer b = new Integer(3);
System.out.println("Before: a = " + a + ", b = " + b);
swap(a,b);
System.out.println("After: a = " + a + ", b = " + b);
}
public static swap(Integer iA, Integer iB) {
Integer tmp = iA;
iA = iB;
iB = tmp;
}
}
Печать:
До: a = 2, b = 3 После: a = 2, b = 3
blockquote>Это происходит потому, что iA и iB являются новыми локальными ссылочными переменными, которые имеют одинаковое значение переданных ссылок (они указывают на a и b соответственно). Таким образом, попытка изменить ссылки iA или iB будет меняться только в локальной области, а не за пределами этого метода.
Не вкладывайте компонент Route
в другой компонент Route
, вместо этого добавляйте вложенный элемент Route
в компонент, в который вы хотите его визуализировать.
Например:
class App extends Component {
render() {
return (
<div className="app-component">
<Router>
// using path="/" will throw an error
<Route path="/root" component={Root} />
</Router>
<Headers />
{this.props.children}
<Footer />
</div>
);
}
}
function Root({match}) {
return (
<div>
<h2>Root</h2>
<ul>
<li>
<Link to={`${match.url}/home`}>Home</Link>
</li>
</ul>
<Route path={`${match.path}/:nestedComponent`} component={Home} />
</div>
);
}
Для получения дополнительной информации о маршрутах вложений, вы должны пройти через этот Источник