Любые данные о том, как я могу это исправить ...
Моя цель состоит в том, чтобы пользователь выполнил поиск «Джейн Смит» в строке поиска, нажал кнопку поиска и отобразил карточки, содержащие «Джейн Смит»
В настоящее время с тем, что у меня есть, пользователь ищет «Джейн Смит», которая сохраняется как «термин», и как только пользователь нажимает кнопку поиска, функция «fetchStudents» перестает работать, говоря, что у него нет «термина»
У меня проблемы с передачей значения 'term' из тега SearchBarInput в тег SearchBarButton, поэтому в контейнере студента я могу использовать его в функции mapDispatchToProps.
Мой компонент searchBar состоит из
const SearchBar = ({ onClick, value }) => (
<SearchBarWrapper>
<div>
<FontAwesomeIcon icon="search" className="searchIcon" />
<SearchBarInput
name="searchBarInput"
placeholder=" Search for something..."
label="searchBar"
defaultValue={value}
/>
<SearchBarButton onClick={onClick}>Search</SearchBarButton>
</div>
</SearchBarWrapper>
);
export default SearchBar;
В моем студенческом контейнере у меня
const Students = ({ studentsPayload = [], onClick }) => (
<StudentsContainer>
<SearchBarContainer>
<SearchBar onClick={onClick} />
</SearchBarContainer>
{studentsPayload.length > 0 ? (
<StudentsCard data={studentsPayload} />
) : null}
</StudentsContainer>
);
const mapDispatchToProps = dispatch => ({ onClick: ({ target: { value } }) => dispatch(fetchStudents(value)) });
const mapStateToProps = ({ students: { studentsPayload } }) => ({ studentsPayload });
/**
* Connects component to redux store
*/
const enhancer = connect(
mapStateToProps,
mapDispatchToProps,
)(StudentSearch);
export default enhancer;
Мой fetchStudents в действиях выглядит так
export const fetchStudents = term => async dispatch => {
try {
const { data: { items } } = await fetchData(
`${process.env.REACT_APP_STUDENTS_URLP1}${term}${process.env.REACT_APP_STUDENTS_URLP2}`);
dispatch({ type: FETCH_STUDENTS, studentsPayload: items });
} catch (error) {
throw new Error(error);
}
};
Заранее спасибо!