The 26-year-old forward, who was a restricted free agent, avoided a salary arbitration hearing scheduled for Aug. 20.
Dickinson was traded to the Canucks by the Dallas Stars on July 17 for a third-round pick in the 2021 NHL Draft (forward Ayrton Martino). He scored 15 points (seven goals, eight assists) in 51 games last season.
"Jason was an important addition for our forward group this summer and we're pleased to have agreed to terms with him on a three-year deal," Canucks general manager Jim Benning said. "He's a versatile player that can play on both the wing and at center and is also a strong penalty killer."
Selected by Dallas in the first round (No. 29) of the 2013 NHL Draft, Dickinson has scored 63 points (25 goals, 38 assists) in 221 regular-season games and nine points (five goals, four assists) in 40 Stanley Cup Playoff games. He scored four points (two goals, two assists) in 27 games in 2019-20 to help the Stars advance to the Stanley Cup Final, where they lost to the Tampa Bay Lightning in six games.