Вам нужно передать обработчик из . Компонент приложения имеет реквизит , и он должен обновить состояние , пожалуйста, проверьте код ниже, который я редактировал.
import React, {Component} from 'react';
import GroupItem from './components/GroupItem'
import SearchBar from './components/SearchBar'
class App extends Component {
state = {
views: [
{
name: 'Testname',
description: 'testbeschreibung',
status: 'ok'
},
{
name: 'Ein Anderer Titel',
description: 'lorem ipsum',
status: 'ok'
}
],
commands: [
{
name: 'Wieder etwas',
description: 'testbeschreibung',
status: 'ok'
}
],
search : []
}
handleSearchFill = (data) =>{
this.setState({search:data})
}
render()
{
return (
<div>
<SearchBar searchFill={this.handleSearchFill}/>
<h2>Views </h2>
{this.state.views.map((view) => (<GroupItem data={view} type={'view'} />))}
<h2>Commands</h2>
{this.state.commands.map((command) => (<GroupItem data={command} type={'command'} />))}
</div>
);
}
}
export default App;
import React, {Component} from 'react';
class SearchBar extends Component {
callApi(){
let search = this.refs.search.value;
fetch('http://my-awesome.api/'+search)
.then((result) => {
this.props.searchFill(result.json());
}).then((jsonResult) => {
console.log(jsonResult);
})
}
render() {
return (
<div class="input-group mb-3" id="search">
<input type="text" class="form-control" ref="search" placeholder="URL" aria-label="URL" />
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" onClick={() => this.callApi()}>Search</button>
</div>
</div>
);
}
}
export default SearchBar;
Кажется, что менеджер проектов NetBeans 6.5 Java Веб-приложения не имеет, "Включают Groovy" поддержка, которая присутствует в проектах Библиотеки приложения и Библиотеки классов Java Java.
Я могу думать о двух способах, которыми Вы могли бы обойти это:
Во-первых, Вы могли поместить свой код Groovy и тесты в отдельном проекте как Библиотека классов Java. Затем сделайте веб-приложение Java зависящим от проекта Groovy. NetBeans разработает зависимый проект автоматически, таким образом, Вы едва заметите, что они находятся в отдельных проектах.
Во-вторых, "Включают Groovy", не является волшебным. Все, что это делает, записать groovy-build.xml в/nbprojects и изменить build-impl.xml для импорта его. groovy-build.xml переопределяет значение по умолчанию "javac" макрос для вызова "groovyc" вместо этого. Если Вы вообще удобны с Муравьем, Вы могли бы скопировать groovy-build.xml с проекта JAVA-приложения и скопировать его в Ваш веб-проект Java и затем импортировать его из Вашего build.xml (прежде чем build-impl.xml будет импортирован). Для groovy-build.xml были бы, вероятно, нужны несколько тонких настроек, поскольку некоторые свойства между веб-приложением и библиотекой классов немного отличаются.
@Dave Smith,
Это было точно, что я сделал. Я создал один javase проект и одно веб-приложение и начал сравнивать их. После нескольких минут я понял, что единственным различием был groovy-build.xml.
Таким образом, я скопировал groovy-build.xml в dir и вставил следующие строки в мой build.xml:
<import file="nbproject/groovy-build.xml"/>
Прямо перед постоянным клиентом
<import file="nbproject/build-impl.xml"/>
И затем названный отличным файлом для перезаписи-init-macrodef-javac.
<target depends="-groovy-init-macrodef-javac" name="-pre-compile">
</target>
Я также должен был изменить пространство имен от groovy-build.xml до моего исключая:
<macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2">
И вставленный j2ee путь к классу ($ {j2ee.platform.classpath}) к атрибуту несколько строк позже:
<attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/>
После этого проект работал успешно!=D
Спасибо за все!