Share data between 2 React components using React Hooks
MovieSearchComponent

With the useState the common pattern is to name the state update function matching with the state value, i.e. movieList and setMovieList. This makes it clear what state the function will update.
I had to read and reread your description of addMovie and compare it against the actual implementation. It isn't clear if the function is to add a movie, add an array of movies, or, based on the implementation, replace existing movie array list. The name of the function and the result of the function executing should match. In your description you say addMovie updates the movielist array, so for the sake of code review I'll assume that to mean the third option with state replacement. In this case the callback function can simply be setMovieList. Update the prop name as well.

Code suggestions
import React, { Fragment } from 'react';

...

const MovieSearchComponent = () =&gt; {
  const [movieList, setMovieList] = useState&lt;Movie[]&gt;([]);

  return (
    &lt;Fragment&gt;
      &lt;MovieSearch setMovieList={setMovieList} /&gt;
      &lt;MovieResultList movieList={movieList}/&gt;      
    &lt;/Fragment&gt;
  )
};

MovieSearch

Update prop addMovie to setMovieList.
Values like apiKey and baseurl that never change don't need to be in the functional component body and continually redefined. Declare them externally in the file.
It may be better to extract the synthetic event data and allow the event object to be returned to the event pool as quickly as possible. Extract and pass the event's target's value to setMovieSearchResults.
Handle the fetch request's unhappy paths, i.e. a not-successful responses or errors handling successful responses. Checking that the fetch was successful.
You should always standardize and sanitize user input.

Code suggestions
const apikey = 'api_key=***************dad4';
const baseurl = 'https://api.themoviedb.org/3/search/movie?'

const Search = styled.input`
  color: green;
`;

const MovieSearch = ({ setMovieList }) =&gt; { 
    const searchTMDBapi = e =&gt; {
        const { value } = e.target;

        // Simple example: URI encode and lowercase
        // ... there's more you could do
        const query = encodeURI(value.toLowerCase());

        setMovieSearchResults(query);
    }

    const setMovieSearchResults = debounce(query =&gt; {
        fetch(baseurl + apikey + '&amp;language=en-US&amp;query=' + query + '&amp;page=1&amp;include_adult=false')
          .then(response =&gt; {
            if (!response.ok) {
              throw new Error('Network response was not ok');
            }
            return response.json();
          })
          .then(data =&gt; setMovieList(data.results))
          .catch(console.error);
  }, 500);

  return &lt;Search placeholder=&quot;Search&quot; onChange={searchTMDBapi}/&gt;
}

MovieResultList

Pretty simple &amp; clean component. Only suggestion here might be to tighten up variables by using object destructuring.

Code suggestions
const MovieResultList = ({ movieList }) =&gt; (
  &lt;div&gt;
    &lt;ul&gt;
      {movieList.map(({ id, original_title }) =&gt; &lt;li key={id}&gt;{original_title}&lt;/li&gt;)}
    &lt;/ul&gt;
  &lt;/div&gt;
);